Pemahaman mendalam tentang IEnumerable
dan IEnumerator
dalam C#: alat yang berkuasa untuk lelaran yang cekap
Dalam pembangunan perisian, lelaran koleksi objek yang cekap adalah penting. Rangka kerja .NET menyediakan dua antara muka utama untuk ini: IEnumerable
dan IEnumerator
.
IEnumerable
Antara Muka
IEnumerable
Antara muka mewakili koleksi objek. Ia mentakrifkan satu kaedah GetEnumerator()
yang mengembalikan objek IEnumerator
. Mana-mana kelas yang membenarkan lelaran elemennya boleh melaksanakan antara muka ini.
IEnumerator
Antara Muka
IEnumerator
mewakili enumerator, iaitu objek yang boleh digunakan untuk lelaran pada koleksi objek. Ia mentakrifkan dua kaedah: MoveNext()
dan Current()
. MoveNext()
Majukan enumerator ke elemen seterusnya dalam koleksi dan mengembalikan nilai Boolean yang menunjukkan sama ada iterator telah mencapai penghujung koleksi. Current()
Mengembalikan elemen semasa dalam koleksi.
Penggunaan IEnumerable
dan foreach
pernyataan
IEnumerable
biasanya digunakan bersama dengan pernyataan foreach
dalam C#. Pernyataan foreach
menyediakan cara ringkas dan mudah untuk mengulang koleksi objek. Pengkompil secara automatik memanggil kaedah GetEnumerator()
objek koleksi dan menggunakan objek IEnumerator
yang terhasil untuk mengulangi elemennya.
Mengapa menggunakan IEnumerable
dan IEnumerator
?
Kecekapan: IEnumerable
dan IEnumerator
membenarkan lelaran yang cekap dengan mengelak memuatkan keseluruhan koleksi ke dalam memori. Mereka menyediakan mekanisme untuk mengakses elemen koleksi satu demi satu, dengan itu mengurangkan overhed memori dan meningkatkan prestasi.
Kebolehlanjutan: IEnumerable
dan IEnumerator
ialah antara muka standard dan mana-mana kelas boleh melaksanakannya. Ini membolehkan pembangun membuat kelas tersuai yang boleh diulang dengan mudah dengan cara yang konsisten tanpa mengira pelaksanaan dalaman mereka.
Contoh penggunaan
Pertimbangkan contoh berikut:
<code class="language-csharp">using System; using System.Collections.Generic; public class MyCollection : IEnumerable<int> { private List<int> _data = new List<int>(); public IEnumerator<int> GetEnumerator() { foreach (int item in _data) { yield return item; } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public void Add(int value) { _data.Add(value); } } public class Example { public static void Main(string[] args) { MyCollection myCollection = new MyCollection(); myCollection.Add(1); myCollection.Add(2); myCollection.Add(3); foreach (int item in myCollection) { Console.WriteLine(item); } } }</code>
Dalam contoh ini, kelas MyCollection
melaksanakan IEnumerable<int>
dan mentakrifkan enumerator tersuai untuk mengulangi elemennya. Pernyataan foreach
kemudiannya boleh mengulangi koleksi dan mencetak elemen ke konsol.
Atas ialah kandungan terperinci Bagaimanakah `IEnumerable` dan `IEnumerator` membolehkan lelaran yang cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!