我刚刚遇到C#中的“用户定义的转换到接口或来自接口的转换”问题.我试图做的是创建一个通用的Graph类,可以通过几种不同的方式迭代,具体取决于支持的接口.所以:
public class Graph<T> : IBreadthFirstSearchTree<T>,IDepthFirstSearchTree<T> { // unnecessary details public static explicit operator IBreadthFirstSearchTree<T>(Graph<T> g) { g.enumerator = new GraphEnumerator<T>(g,SortStrategy.BreadthFirst); return g as IBreadthFirstSearchTree<T>; } public static explicit operator IDepthFirstSearchTree<T>(Graph<T> g) { g.enumerator = new GraphEnumerator<T>(g,SortStrategy.DepthFirst); return g as IDepthFirstSearchTree<T>; } }
是用于此用途:
foreach (GraphNode<T> gn in myGraph as IDepthFirstSearchTree) { // do stuff with gn }
任何人都知道如何在语言的约束下实现相同的语法结果?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。