Junior
C# da ArrayList va List o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
C# tilida ArrayList va List o'rtasidagi farqlar quyidagicha:
-
Tiplash:
ArrayListobjectturidagi elementlarni saqlaydi (tiplanmagan kolleksiya), bu elementlarni chiqarib olishda tur konvertatsiyasini talab qiladi va tur xavfsizligini kamaytiradi.List<T>— umumiy kolleksiya (T— belgilangan tur), u aniq belgilangan turdagi elementlarni saqlaydi, tur xavfsizligini ta'minlaydi va tur konvertatsiyasini olib tashlaydi.
-
Performans:
ArrayListga element qo'shish va chiqarib olish sekinroq bo'lishi mumkin, chunki boxing va unboxing jarayonlari talab qilinadi.List<T>odatda tezroq, ayniqsa qiymat turlari uchun, chunki boxing/unboxing yo'q.
-
Tur xavfsizligi:
ArrayListturli turlardagi elementlarni saqlashi mumkin, bu esa ish vaqtida xatolarga olib kelishi mumkin.List<T>kompilatsiya vaqtida tur xavfsizligini ta'minlaydi.
-
Implementatsiya:
ArrayListSystem.Collectionsnom space ichida joylashgan.List<T>System.Collections.Genericnom space ichida joylashgan.
-
Foydalanish:
ArrayListeskirgan va yangi kodda foydalanish tavsiya etilmaydi.List<T>ko'p holatlarda afzal ko'riladi.
Misol:
// ArrayList dan foydalanish
System.Collections.ArrayList arrayList = new System.Collections.ArrayList();
arrayList.Add(1); // int object ga paketlanadi
arrayList.Add("matn"); // string object sifatida saqlanadi
int raqam = (int)arrayList[0]; // tur konvertatsiyasi talab qilinadi
// List<T> dan foydalanish
System.Collections.Generic.List<int> ro'yxat = new System.Collections.Generic.List<int>();
ro'yxat.Add(1); // int qo'shiladi
// int raqam = ro'yxat[0]; // tur konvertatsiyasi talab qilinmaydi
Taqqoslash jadvali:
| Xususiyat | ArrayList | List<T> |
|---|---|---|
| Tiplash | Tiplanmagan (object) | Umumiy (T) |
| Performans | Boxing/unboxing mumkin | Yuqori, boxing/unboxing yo'q |
| Tur xavfsizligi | Past | Yuqori (kompilatsiya vaqtida) |
| Nomi bo'sh joy | System.Collections | System.Collections.Generic |
| Tavsiya | Tavsiya etilmaydi | Tavsiya etiladi |