我有一個簡單的類,它表示一個最可能是樹的圖中的頂點。因此,這個類看起來是這樣的: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