深入探討 C# 中的 foreach 迴圈:哪些類別可以使用?
C# 中的 foreach 迴圈是一個基本功能,它允許程式設計師輕鬆迭代集合中的元素。然而,了解哪些類別可以使用 foreach 迴圈對於有效使用至關重要。
支援 foreach 迴圈的類別
並非所有類別都支援 foreach 迴圈。只有符合特定條件的類別才能使用 foreach 迴圈。根據答案,關鍵在於類別中存在一個公共的 GetEnumerator()
方法。此方法應傳回一個對象,該對象具有 bool MoveNext()
方法和類型為 T 的 Current
屬性。
常見的實作方式
實際上,對這項要求更常見的解釋是實作 IEnumerable
/IEnumerable<T>
介面。這些介面分別要求存在 IEnumerator
/IEnumerator<T>
。
支援的資料結構
實作 ICollection
/ICollection<T>
介面的類別也隱式地支援 foreach 迴圈。這包括標準集合類型,如 Collection<T>
、List<T>
和陣列 (T[])。因此,大多數常用的「資料集合」都可以使用 foreach 迴圈進行遍歷。
foreach 循環的工作原理
一個 foreach 循環,例如 foreach (int i in obj) { ... }
,內部類似以下程式碼結構:
<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>
變異體與注意事項
IDisposable
,它將類似於 using
區塊那樣被調用,以確保正確處置。 int i
)的聲明放在循環體外部;從 C# 5.0 開始,它在循環體內部聲明。當在嵌套的匿名方法或 lambda 表達式中使用循環變數時,這種差異就變得很重要。 以上是C# 中的哪些類別支援 Foreach 迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!