foreach-Schleife in C#
F: Welche Objekttypen unterstützen foreach-Schleife?
Antwort: Die Kernverwendung der foreach
-Schleife erfordert eine MoveNext()
-Methode, die ein Objekt mit einer Current
-Methode und einer GetEnumerator()
-Eigenschaft zurückgibt. Einfach ausgedrückt sind die häufigsten Typen diejenigen, die IEnumerable
/IEnumerable<T>
implementieren. Dazu gehören Implementierungen von ICollection
/ICollection<T>
, wie z. B. Collection<T>
, List<T>
, Arrays usw.
Wie funktioniert es?
Eine foreach(int i in obj) {...}
-Schleife der Form foreach
entspricht im Wesentlichen:
<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
-Objekt (tmp
) wird verwendet, um die Elemente der Sammlung zu durchlaufen und sie bei jeder Iteration der Schleifenvariablen zuzuweisen. Wenn der Enumerator die Dispose()
-Methode unterstützt, wird sie genauso aufgerufen wie mit der using
-Anweisung.
Hinweis: Der Speicherort der Schleifenvariablendeklaration „int i
“ unterscheidet sich zwischen C# 4.0 und C# 5.0. C# 5.0 deklariert es innerhalb der Schleife, während C# 4.0 es außerhalb der Schleife deklariert. Diese Unterscheidung ist wichtig, wenn Schleifenvariablen in Abschlüssen oder Lambda-Ausdrücken innerhalb von Schleifen verwendet werden.
Das obige ist der detaillierte Inhalt vonWelche C#-Objekttypen unterstützen foreach-Schleifen und wie funktionieren sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!