gelung foreach dalam C#
S: Jenis objek manakah yang menyokong setiap gelung?
Jawapan: Penggunaan teras gelung foreach
memerlukan kaedah MoveNext()
yang mengembalikan objek dengan kaedah Current
dan sifat GetEnumerator()
. Ringkasnya, jenis yang paling biasa ialah yang melaksanakan IEnumerable
/IEnumerable<T>
. Ini termasuk pelaksanaan ICollection
/ICollection<T>
, seperti Collection<T>
, List<T>
, tatasusunan, dsb.
Bagaimana ia berfungsi?
Gelung foreach(int i in obj) {...}
dalam bentuk foreach
pada asasnya bersamaan dengan:
<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
) digunakan untuk mengulang elemen koleksi dan menetapkannya kepada pembolehubah gelung pada setiap lelaran. Jika enumerator menyokong kaedah Dispose()
, ia dipanggil sama seperti menggunakan pernyataan using
.
Nota: Lokasi pengisytiharan pembolehubah gelung "int i
" berbeza antara C# 4.0 dan C# 5.0. C# 5.0 mengisytiharkannya di dalam gelung, manakala C# 4.0 mengisytiharkannya di luar gelung. Perbezaan ini penting apabila menggunakan pembolehubah gelung dalam penutupan atau ungkapan lambda dalam gelung.
Atas ialah kandungan terperinci Jenis Objek C# manakah yang menyokong setiap Gelung dan Bagaimana Ia Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!