Perbedaan antara Ienumerable dan Ienumerator

Perbedaan antara Ienumerable dan Ienumerator

Sebelum kita melompat ke perbedaan antara Ienumerable dan Ienumerator, mari kita pahami terlebih dahulu istilah enumerator dan enumerable dan kapan dan mengapa menggunakannya.

Enumerable adalah modul yang digunakan di kelas array yang memberi Anda enumerator. Kelas itu sendiri tidak masing -masing metode. Bahkan, ia menggunakan metode yang disebut 'getenumerator' yang memberi Anda pencacah untuk mengambil itemnya.

Pencacah adalah objek yang mengembalikan setiap item dalam koleksi dalam urutan tertentu, persis seperti yang diminta. Kompiler menghasilkan kode yang menggunakan enumerator, saat Anda menulis loop foreach di C#.

Ienumerator adalah antarmuka yang diimplementasikan oleh enumerator dan kelas enumerable mengimplementasikan antarmuka ienumerable.

Apa yang Ienumerable?

Ienumerable adalah antarmuka dasar yang digunakan untuk mendapatkan objek yang tahu cara menyebutkan (atau mengulang) atas elemen dalam koleksi.

Ini adalah implementasi dari pola iterator yang menyediakan mekanisme untuk melintasi objek dalam koleksi terlepas dari struktur internalnya. Antarmuka Ienumerable mewakili objek yang dapat diulangi dalam koleksi.

Ini hanya menggunakan satu metode "getEnumerator" yang mengembalikan instance kelas enumerator yang mengimplementasikan antarmuka iEnumerator.

Apa itu Ienumerator?

Antarmuka Ienumerator, satu sisi lain, menyatakan dua metode - reset () dan moveNext () - dan satu properti, saat ini. MoveNext () mengembalikan Vale Boolean yang menunjukkan akhir daftar dan membantu memposisikan elemen pertama dalam daftar setelah memanggil metode reset () - ia mengatur enumerator ke posisi default sehingga untuk mengulangi daftar dari daftar awal.

Properti saat ini hanya dapat dipanggil melalui instance dari antarmuka iEnumerator dan mengembalikan elemen saat ini dalam daftar.

Perbedaan antara Ienumerable dan Ienumerator

Dasar -dasar Ienumerable dan Ienumerator

Baik Ienumerable dan IEnumerator adalah antarmuka yang mengimplementasikan pola desain perangkat lunak Iterator di .Kerangka kerja bersih bersama. Itu .Kerangka kerja bersih membuat mengakses elemen individual dalam koleksi kustom saat menerapkan antarmuka IEnumerable dan ienumerator. Antarmuka Ienumerable hanya menyatakan satu metode yang disebut getEnumerator yang mengembalikan jenis antarmuka lain yang disebut antarmuka ienumerator untuk koleksi tertentu. Ienumerator, di sisi lain, adalah antarmuka dasar untuk semua pencacah non-generik yang digunakan untuk membaca data dalam koleksi. Namun, pencacah tidak dapat digunakan untuk memodifikasi koleksi yang mendasarinya.

Metode

Antarmuka IEnumerable mendefinisikan hanya satu metode getEnumerator () yang merupakan metode instance yang digunakan pada beberapa jenis koleksi yang berbeda. Itu mendapatkan iterator ienumerator yang dapat digunakan untuk mengulangi semua nilai dari koleksi. Saat Anda menulis loop foreach di C# kode yang dihasilkannya panggilan metode getEnumerator untuk membuat enumerator yang digunakan oleh loop.

Ienumerator, di sisi lain, menggunakan dua metode MoveNext () dan reset () dan arus properti. Metode moveNext () membawa enumerator ke elemen berikutnya dari koleksi, sedangkan metode reset () mengatur enumerator ke posisi defaultnya yang sebelum elemen pertama dalam koleksi.

Penerapan

IEnumerable adalah antarmuka generik yang menyediakan abstraksi untuk pengulangan elemen dan dengan mengimplementasikan antarmuka IEnumerable, kelas generik pada dasarnya memungkinkan iterasi melalui antarmuka iEnumerator. Dengan melakukan hal itu, kelas -kelas ini akhirnya menyediakan antarmuka umum untuk mengambil contoh objek IEnumerator yang mendukung semua set dasar metode navigasi.

Ienumerator adalah antarmuka dasar untuk enumerator dan penggunaan antarmuka IEnumerable mengharuskan kelas harus mengimplementasikan iEnumerator. Kedua antarmuka perlu diterapkan, jika Anda ingin memberikan dukungan untuk foreach. Kelas abstrak 'Abstracationenumerator' mengimplementasikan antarmuka IEnumerator.

Fungsionalitas Ienumerable dan ienumerator

Antarmuka Ienumerable, bersama dengan antarmuka IENUMERATOR yang mendukung, memungkinkan Anda untuk mengulangi elemen -elemen di tumpukan menggunakan pernyataan 'foreach'. Itu adalah antarmuka dasar yang digunakan untuk objek jenis koleksi. Iterasi dimulai dengan elemen atas di tumpukan dan diakhiri dengan elemen tertua di tumpukan. Sederhananya, itu mewakili objek yang dapat disebutkan.

Bersama dengan antarmuka IEnumerator, mereka memungkinkan elemen arraylist untuk diulangi secara standar dan berurutan, dimulai dengan elemen pertama dan ke depan. Pernyataan foreach menggunakan metode dan sifat antarmuka ienumerator untuk mengulangi semua elemen dalam koleksi.

Ienumerable vs. Ienumerator: Bagan Perbandingan

Ringkasan Ienumerator ayat Ienumerable

Singkatnya, baik Ienumerable maupun Ienumerator adalah antarmuka yang digunakan untuk menyebutkan atau mengulangi kelas yang memiliki sifat koleksi yang berarti mereka memfasilitasi akses iteratif dalam koleksi khusus. Ienumerable adalah antarmuka generik yang tersedia untuk objek jenis koleksi dan dengan mengimplementasikan antarmuka IEnumerable, kelas generik pada dasarnya memungkinkan iterasi melalui antarmuka iEnumerator. Ini hanya menggunakan satu metode getEnumerator yang mengembalikan instance kelas enumerator yang mengimplementasikan antarmuka iEnumerator. Antarmuka Ienumerator dimaksudkan untuk digunakan sebagai aksesor dan tidak dapat digunakan untuk memodifikasi koleksi yang mendasarinya. Ini menyediakan dua metode abstrak reset () dan moveNext (), dan arus properti untuk memanggil elemen tertentu dalam koleksi.