首頁 >後端開發 >C++ >哪些 C# 物件類型支援 foreach 循環以及它們如何運作?

哪些 C# 物件類型支援 foreach 循環以及它們如何運作?

Susan Sarandon
Susan Sarandon原創
2025-01-10 10:48:40597瀏覽

Which C# Object Types Support foreach Loops and How Do They Work?

C#中的foreach循環

問:哪些物件類型支援foreach循環?

答: foreach循環的核心使用需要一個傳回具有MoveNext()方法和Current屬性的物件的GetEnumerator()方法。簡單來說,最常見的類型是實現了IEnumerable/IEnumerable<T>的類型。這包括ICollection/ICollection<T>的實現,例如Collection<T>List<T>、陣列等等。

它是如何運作的?

一個形如foreach(int i in obj) {...}foreach循環,本質上等同於:

<code class="language-csharp">var tmp = obj.GetEnumerator();
int i; // C# 4.0及之前版本
while(tmp.MoveNext()) {
    int i; // C# 5.0及之后版本
    i = tmp.Current;
    {...} // 你的代码
}</code>

IEnumerator物件(tmp)用於遍歷集合的元素,並在每次迭代中將其賦值給循環變數。如果枚舉器支援Dispose()方法,則會呼叫它,就像使用using語句一樣。

注意: 循環變數宣告「int i」的位置在C# 4.0和C# 5.0之間有所不同。 C# 5.0在循環內宣告它,而C# 4.0在循環外宣告它。當在循環中使用循環變數在閉包或lambda表達式中時,這種區別很重要。

以上是哪些 C# 物件類型支援 foreach 循環以及它們如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn