Sobes.tech
Junior

Koja je razlika između ArrayList i List u C#?

sobes.tech АИ

Одговор од АИ

Разлике између ArrayList и List у C# су следеће:

  • Типизација:

    • 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>();
листa.Add(1); // Додајемо int

// int број = листа[0]; // Претварање типа није потребно

Табела поређења:

Карактеристика ArrayList List<T>
Типизација Не типизирана (object) Генеричка (T)
Перформансе Може бити паковање/рапакивање Више перформанси, без паковања/рапакивања за вредносне типове
Безбедност типа Ниска Висока (на нивоу компајлера)
Простор имена System.Collections System.Collections.Generic
Препорука Не препоручује се Препоручује се