Perbezaan antara ienumer dan ienumerator

Perbezaan antara ienumer dan ienumerator

Sebelum kita melompat ke perbezaan antara iEnumerable dan ienumerator, marilah kita terlebih dahulu memahami istilah penghitung dan boleh dibaca dan kapan dan mengapa menggunakannya.

Dikenali adalah modul yang digunakan dalam kelas array yang memberi anda pengarang. Kelas itu sendiri tidak setiap kaedah. Malah, ia menggunakan kaedah yang disebut 'getenumerator' yang memberi anda penghitung untuk mengambil barangnya.

Penghitungan adalah objek yang mengembalikan setiap item dalam koleksi dalam urutan tertentu, tepat seperti yang diminta. Pengkompil menghasilkan kod yang menggunakan penghitung, apabila anda menulis gelung foreach di C#.

Ienumerator adalah antara muka yang dilaksanakan oleh penghitung dan kelas yang boleh dibaca melaksanakan antara muka iEnumerable.

Apa yang boleh dimakan?

IEnumerable adalah antara muka asas yang digunakan untuk mendapatkan objek yang tahu bagaimana untuk menghitung (atau berulang) ke atas unsur -unsur dalam koleksi.

Ini adalah pelaksanaan corak iterator yang menyediakan mekanisme untuk melintasi objek dalam koleksi tanpa mengira struktur dalamannya. Antara muka yang tak terhingga mewakili objek yang boleh diulangi dalam koleksi.

Ia hanya menggunakan satu kaedah "getenumerator" yang mengembalikan contoh kelas enumerator yang melaksanakan antara muka ienumerator.

Apa itu Ienumerator?

Antara muka ienumerator, sebaliknya, mengisytiharkan dua kaedah - menetapkan semula () dan movenext () - dan satu harta, semasa. MoveNext () mengembalikan vale boolean yang menunjukkan akhir senarai dan membantu meletakkan elemen pertama dalam senarai selepas memanggil kaedah penetapan semula () - ia menetapkan pengarang ke kedudukan lalainya supaya dapat mengulangi senarai dari permulaan.

Harta semasa hanya boleh dipanggil melalui contoh antara muka ienumerator dan ia mengembalikan elemen semasa dalam senarai.

Perbezaan antara ienumer dan ienumerator

Asas -asas Ienumer dan ienumerator

Kedua -dua iEnumerable dan ienumerator adalah antara muka yang melaksanakan corak reka bentuk perisian iterator di .Rangka kerja bersih bersama -sama. The .Rangka Kerja Bersih menjadikan mengakses elemen individu dalam koleksi tersuai semasa melaksanakan antara muka ienumer dan ienumerator. Antara muka iEnumerable mengisytiharkan hanya satu kaedah yang dipanggil getenumerator yang mengembalikan satu lagi jenis antara muka yang disebut antara muka ienumerator untuk koleksi tertentu. Sebaliknya, Ienumerator adalah antara muka asas untuk semua penghitung bukan generik yang digunakan untuk membaca data dalam koleksi. Walau bagaimanapun, pengarang tidak boleh digunakan untuk mengubah suai koleksi asas.

Kaedah

Interface IEnumerable hanya menentukan satu kaedah getEnumerator () yang merupakan kaedah contoh yang digunakan pada beberapa jenis koleksi yang berbeza. Ia mendapat ienumerator iterator yang boleh digunakan untuk melangkah ke atas semua nilai dari koleksi. Semasa anda menulis gelung foreach di C# kod, ia menjana panggilan kaedah getenumerator untuk membuat enumerator yang digunakan oleh gelung.

Sebaliknya, Ienumerator menggunakan dua kaedah MoveNext () dan menetapkan semula () dan arus harta tanah. Kaedah MoveNext () mengambil penghitung ke elemen seterusnya koleksi, sedangkan kaedah Reset () menetapkan pengarang ke kedudukan lalai yang sebelum elemen pertama dalam koleksi.

Pelaksanaan

IEnumerable adalah antara muka generik yang menyediakan abstraksi untuk gelung ke atas unsur -unsur dan dengan melaksanakan antara muka yang tak terhingga, kelas generik pada dasarnya membolehkan lelaran melalui antara muka ienumerator. Dengan berbuat demikian, kelas -kelas ini akhirnya menyediakan antara muka yang sama untuk mendapatkan contoh objek ienumerator yang menyokong semua set asas kaedah navigasi.

Ienumerator adalah antara muka asas untuk pengarang dan penggunaan antara muka iEnumerable memerlukan kelas mesti melaksanakan ienumerator. Kedua -dua antara muka perlu dilaksanakan, jika anda ingin memberi sokongan untuk foreach. Kelas abstrak 'AbstrakEnumerator' melaksanakan antara muka ienumerator.

Fungsi Ienumerable dan ienumerator

Antara muka IEnumerable, bersama -sama dengan antara muka ienumerator yang menyokong, membolehkan anda melelehkan unsur -unsur dalam timbunan menggunakan pernyataan 'foreach'. Ia adalah antara muka asas yang digunakan untuk objek jenis koleksi. Lelaran bermula dengan elemen teratas dalam timbunan dan berakhir dengan elemen tertua dalam timbunan. Ringkasnya, ia mewakili objek yang dapat disebutkan.

Bersama -sama dengan antara muka ienumerator, mereka membolehkan unsur -unsur arraylist akan diulang dengan fesyen yang diseragamkan, berurutan, bermula dengan elemen pertama dan maju ke depan. Pernyataan Foreach menggunakan kaedah dan sifat antara muka ienumerator untuk meleset semua elemen dalam koleksi.

Ienumerable vs. Ienumerator: carta perbandingan

Ringkasan ienumerator ayat -ayat yang tak terhingga

Ringkas. IEnumerable adalah antara muka generik yang tersedia untuk objek jenis koleksi dan dengan melaksanakan antara muka iEnumerable, kelas generik pada dasarnya membolehkan lelaran melalui antara muka ienumerator. Ia hanya menggunakan satu kaedah getenumerator yang mengembalikan contoh kelas enumerator yang melaksanakan antara muka ienumerator. Antara muka ienumerator dimaksudkan untuk digunakan sebagai aksesor dan tidak dapat digunakan untuk mengubah suai koleksi asas. Ia menyediakan dua kaedah abstrak reset () dan movenext (), dan arus harta untuk memanggil elemen tertentu dalam koleksi.