Koleksi yang mewakili sekumpulan objek yang dapat diakses dengan melintasi setiap elemen (khususnya, dapat diakses menggunakan perulangan foreach) Koleksi berisi beberapa elemen, yaitu ada objek kelas koleksi dan objek elemen N
Karena setiap kelas koleksi mengimplementasikan antarmuka IEnumerable, setiap objek kelas koleksi memiliki metode GetEnumerator(), yang dapat mengembalikan objek yang mengimplementasikan antarmuka IEnumerator, yang bukan objek kelas koleksi atau objek kelas elemen koleksi, itu adalah objek kelas independen. Objek ini memungkinkan Anda untuk mengulangi setiap objek elemen dalam objek kelas koleksi
Jika kelas koleksi adalah kelas koleksi yang ditentukan pengguna, pengguna harus mengimplementasikan metode GetEnumerator(), jika tidak, loop tidak dapat digunakan. Tentu saja, kelas IEnumerator yang sesuai dengan kelas koleksi kustom ini (kelas yang mengimplementasikan antarmuka) juga harus disesuaikan
Misalnya, IEnumerator yang sesuai dengan kelas koleksi ArrayList adalah ArrayListEnumeratorSimple IEnumerator yang sesuai dengan kelas koleksi Array adalah SZArrayEnumerator (Tidak ada kelas yang tercakup dalam dokumentasi Pustaka Kelas .NET Framework (MSDN))
1. Antarmuka dalam System.Colloctions yang mewakili perilaku koleksi adalah: 1) ICollection Tentukan ukuran, jumlah enum, dan metode sinkronisasi untuk semua koleksi. Berasal dari IEnumerable Ini mendefinisikan perilaku paling dasar dari kelas koleksi, dan semua kelas koleksi mengimplementasikan antarmuka ini (antarmuka dasar) Tetapi perilakunya terlalu mendasar: ini terutama adalah properti Count, dan tidak masuk akal untuk menerapkannya sendiri
2) IEnumerable Mengekspos enumerasi yang mendukung iterasi sederhana pada satu set Ini hanya memiliki satu metode, GetEnumerator(), yang mengembalikan antarmuka IEnumerator yang dapat melaluinya melintasi koleksi Pada dasarnya semua kelas koleksi mengimplementasikan antarmuka ini
3) IList Implementasi IList adalah kumpulan nilai yang dapat diurutkan dan dapat diakses oleh indeks untuk anggotanya, dan itu sendiri mengimplementasikan antarmuka ICollection dan IEnumerable adalah kelas dasar abstrak untuk semua daftar. Ada tiga kategori implementasi IList: hanya-baca, ukuran tetap, dan ukuran variabel.
4) Identitas Implementasi IDictionary adalah kumpulan pasangan kunci/nilai yang mengimplementasikan antarmuka ICollection dan IEnumerable adalah antarmuka dasar dari kumpulan pasangan kunci/nilai. Ada tiga kategori implementasi IDictionary: hanya-baca, ukuran tetap, dan ukuran variabel. IDictionary dapat disebut kamus, peta, atau daftar shash, dan mengakses nilai berdasarkan kunci (dari jenis apa pun).
2. Kelas koleksi yang dapat digunakan langsung di System.Collections adalah: 1) Daftar Array Terapkan antarmuka: IList, ICollection, IEnumerable Selama koleksi tidak dimodifikasi, ArrayList dapat dengan aman mendukung banyak pembaca secara bersamaan Saat elemen ditambahkan ke ArrayList, kapasitas secara otomatis ditingkatkan sesuai permintaan dengan mengalokasikan kembali (peningkatan 2x lipat) Jika Anda perlu membuat array objek, tetapi Anda tidak mengetahui ukuran array sebelumnya, Anda dapat menggunakan ArrayList ArrayList mengacu pada semua elemen sebagai objek, sehingga perlu diketik saat mengakses elemen di ArrayList Kelebihan: Mengubah ukuran secara dinamis, penyisipan dan penghapusan elemen yang fleksibel dan nyaman, penyortiran Kekurangan: Kinerja penyisipan tidak sebaik array, bukan jenis yang kuat
2) BitArray Terapkan antarmuka: ICollection dan IEnumerable Kelola array terkompresi dari nilai bit.
3) Hashtable Terapkan antarmuka: IDictionary, ICollection, IEnumerable Anda dapat dengan bebas menambahkan dan menghapus elemen ke Hashtable, beberapa seperti ArrayList, tetapi tanpa overhead kinerja
4) Daftar yang Diurutkan Terapkan antarmuka: IDictionary, ICollection, IEnumerable SortedLIst menggabungkan keunggulan ArrayList dan Hashtable, dan dapat diurutkan berdasarkan nilai kunci
5) Antrean Terapkan antarmuka: ICollection dan IEnumerable Queque adalah antrean, akses masuk pertama, keluar pertama ke elemen individual Anda dapat memanggil metode GetEnumerator() dari objek Queque untuk mendapatkan objek IEnumerator untuk meneleterasi elemen dalam antrean
6) Tumpukan Terapkan antarmuka: ICollection dan IEnumerable Tumpukan adalah tumpukan yang mengakses elemen individual secara last-in, first-out Anda dapat memanggil metode GetEnumerator() dari objek Stack untuk mendapatkan objek IEnumerator untuk mengulangi elemen dalam tumpukan
3. Kelas koleksi yang disebutkan di atas semuanya adalah kelas koleksi umum, dan sebagian besar elemen yang mereka terima adalah jenis Objek, ketika objek dimasukkan Setelah pengumpulan, informasi jenis asli hilang - yaitu, kelas koleksi umum ini tidak diketik dengan kuat Solusinya adalah menggunakan kelas koleksi yang diketik dengan kuat Namespace System.Collections System.Collections.Specialized namespace Beberapa kelas dapat memenuhi persyaratan dan dapat digunakan secara langsung atau diwariskan
|