Sobes.tech
Junior

C# да ArrayList жана List арасындагы айырма эмнеде?

sobes.tech AI

AIден жооп

C#тогу ArrayList жана List ортосундагы айырмачылыктар төмөндөгүлөр:

  • Типтөө:

    • ArrayList элементтерди object түрүндө сактайт (жалпысынан коллекция), бул элементтерди алуу учурунда түрдү өзгөртүүнү талап кылат жана түр коопсуздугун төмөндөтөт.
    • List<T> — жалпы коллекция (T — белгилүү түр), белгилүү түрдөгү элементтерди гана сактайт, түр коопсуздугун камсыз кылат жана түрдү өзгөртүүнүн кереги жок.
  • Өндүрүмдүүлүк:

    • ArrayListке элементтерди кошуу жана алуу жайында жайыраак болушу мүмкүн, анткени боксинг (boxing) жана анбоксинг (unboxing) керек.
    • List<T> көбүнчө тезирээк, өзгөчө маанилүү түрлөр үчүн, анткени боксинг/анбоксинг жок.
  • Түр коопсуздугу:

    • ArrayList ар кандай түрдөгү элементтерди камтышы мүмкүн, бул ишке ашырылуу учурунда каталарга алып келиши мүмкүн.
    • List<T> — компиляция учурунда түр коопсуздугун камсыз кылат.
  • Ишке ашыруу:

    • ArrayList System.Collections кеңейтүүсүндө жайгашкан.
    • List<T> System.Collections.Generic кеңейтүүсүндө жайгашкан.
  • Колдонуу:

    • ArrayList эскирген жана жаңы коддо колдонуу сунушталбайт.
    • List<T> көбүнчө сценарийлер үчүн артыкчылык берилет.

Кыскача колдонуу мисалы:

// ArrayList колдонуу
System.Collections.ArrayList arrayList = new System.Collections.ArrayList();
arrayList.Add(1);       // int objectке боксдолот
arrayList.Add("жол"); // string object катары сакталат

int сан = (int)arrayList[0]; // түрдү өзгөртүү керек

// List<T> колдонуу
System.Collections.Generic.List<int> тизмек = new System.Collections.Generic.List<int>();
тизмек.Add(1); // int кошуу

// int сан = тизмек[0]; // түрдү өзгөртүү керек эмес

Салыштыруу таблицасы:

Өзгөчөлүк ArrayList List<T>
Түртөө Тураксыз (object) Жалпы (T)
Өндүрүмдүүлүк Боксинг/анбоксинг мүмкүн Жогорку, боксинг/анбоксинг жок
Түр коопсуздугу Төмөн Жогорку (компиляцияда)
Аты-жөнү кеңейтиши System.Collections System.Collections.Generic
Кеңеш Кеңеш берилбейт Кеңеш берилет