.NET menawarkan wadah daftar umum yang kinerjanya hampir sama (lihat pertanyaan Kinerja Array vs. Daftar). Namun mereka sangat berbeda dalam inisialisasi.
Array sangat mudah diinisialisasi dengan nilai default, dan menurut definisi, array sudah memiliki ukuran tertentu:
string[] Ar = new string[10];
Yang memungkinkan seseorang untuk menetapkan item acak dengan aman, katakanlah:
Ar[5]="hello";
dengan daftar hal-hal yang lebih rumit. Saya dapat melihat dua cara untuk melakukan inisialisasi yang sama, yang keduanya tidak akan Anda sebut elegan:
List<string> L = new List<string>(10);
for (int i=0;i<10;i++) L.Add(null);
atau
string[] Ar = new string[10];
List<string> L = new List<string>(Ar);
Apa cara yang lebih bersih?
EDIT: Jawaban sejauh ini mengacu pada kapasitas, yang merupakan sesuatu yang lain selain mengisi daftar. Misalnya, pada daftar yang baru dibuat dengan kapasitas 10 orang, tidak dapat dilakukanL[2]="somevalue"
EDIT 2: Orang-orang bertanya-tanya mengapa saya ingin menggunakan daftar dengan cara ini, karena ini bukan cara yang dimaksudkan untuk digunakan. Saya dapat melihat dua alasan:
Seseorang dapat dengan cukup meyakinkan berpendapat bahwa daftar adalah array "generasi berikutnya", menambahkan fleksibilitas hampir tanpa penalti. Oleh karena itu seseorang harus menggunakannya secara default. Saya menunjukkan bahwa mereka mungkin tidak semudah diinisialisasi.
Apa yang saya tulis saat ini adalah kelas dasar yang menawarkan fungsionalitas default sebagai bagian dari kerangka kerja yang lebih besar. Dalam fungsionalitas default yang saya tawarkan, ukuran List diketahui di tingkat lanjut dan oleh karena itu saya dapat menggunakan array. Namun, saya ingin menawarkan kelas dasar kesempatan untuk memperluasnya secara dinamis dan oleh karena itu saya memilih daftar.
List
bukan pengganti Array
. Mereka memecahkan masalah yang sangat terpisah. Jika Anda menginginkan ukuran tetap, Anda menginginkan file Array
. Jika Anda menggunakan a List
, Anda Melakukannya dengan Salah.