IEnumerable介面的乙個簡單示例

2021-06-04 10:33:25 字數 1258 閱讀 6014

ienumerable

介面是實現foreach迴圈的乙個重要的介面,像陣列、集合等之所以可以用foreach迴圈遍歷其中的每個元素便是因為他們都實現了ienumerable

介面而,那麼這個介面到底是如何執行的呢,通過下面乙個例子可以得到一些啟發。

定義乙個這樣簡單的類:

public class person

;}

由於names屬性是私有屬性,所以無法通過person類的物件對其進行訪問,也就無法對其遍歷,可以讓person類實現ienumerable

介面來對其進行遍歷,實現介面後的類如下:

public class person : ienumerable

;public ienumerator getenumerator()

}

可以看到實現了ienumerable

介面後person類裡面必須實現乙個getenumerator函式,該函式返回的是乙個型別為ienumerator 的物件,於是我們再寫乙個類繼承自ienumerator 介面:

public class personenumerator : ienumerator

//返回當前索引指向的names陣列中的元素

public object current

}//索引,判斷是否遍歷完成

public bool movenext()

else

return false;

}//重置索引的值,以便下一次遍歷

public void reset()

}

然後對getenumerator函式稍加修改就大功告成了,如下:

public class person : ienumerable

;public ienumerator getenumerator()

}

然後就可以用foreach對person類的物件進行遍歷了,如下:

static void main(string args)

console.readkey();

}

我們也可以用如下方法對names陣列進行遍歷:

static void main(string args)

console.readkey();

}

其實用foreach進行遍歷時也是實現的上述步驟。

介面IEnumerable的使用例項

public class linkedlist ienumerable public linkedlistnode last public linkedlistnode addlast object node else return newnode public ienumerator getenu...

實現泛型IEnumerable介面

用c 實現乙個類的ienumerable介面時有兩種方法 1 實現非泛型ienumerable介面 2 實現泛型ienumerable t 介面。如果採用方法1,當集合元素t是值型別時,將涉及到巨多的boxing和unboxing操作。因此,理所當然地採用方法2 例如,以下 採用方法2實現列舉從指定...

陣列,集合,IEnumerable介面,迭代器

發展 陣列 集合 泛型 1 陣列 1.陣列資料結構是system.array類的乙個例項.2.system.array類的語法為 serializableattribute comvisibleattribute true public abstract class array icloneable...