我有一个简单的类,它表示一个最可能是树的图中的顶点。因此,这个类看起来是这样的:C#为什么我不能为自己的类编写自定义的IEnumerator
class Vertex {
public Vertex parent;
public List<Vertex> children;
}
在循环的可能性不大的情况下,我可以链接到同一个顶点为孩子多次。
现在,我做了一个枚举器,它会给图中的每个顶点。所以你可以做
foreach (Vertex item in rootVertex)
并获得图中的每个顶点。为此,我不得不让我的类IEnumerable {Vertex}并编写GetEnumerator方法,以递归方式生成所有顶点。
现在,为了绘制图的目的,我想在同一个类中还有另一个枚举器,它将返回图中的每条边。所以我可以做点像
foreach (Point[] item in rootVertex.GetEdges())
并获得所有的边缘。为此,为了避免混淆,我删除从我的类IEnumerable和实现了两个方法是这样
public IEnumerator<Vertex> GetVertexes() { ...code... }
public IEnumerator<Point[]> GetEdges() { ...code... }
但是,当我尝试做
foreach (Point[] item in rootVertex.GetEdges())
它吐出错误 - 的foreach无法枚举rootVertex因为Vertex类不包含GetEnumerator方法。
我试过谷歌搜索,但没有找到她或不我可以或不能在同一类上做多个枚举。
你能后整个'Vertex'类包括'GetVertexes' /'GetEdges'? – 2013-03-21 07:42:52