Sobes.tech
Junior

Mi a különbség az ArrayList és a List között C#-ban?

sobes.tech MI

Válasz az MI-től

A C#-ban az ArrayList és a List közötti különbségek a következők:

  • Tipizálás:

    • Az ArrayList objektumtípusú elemeket tárol (nem típusos kollekció), ami típuskonverziót igényel az elemek kivételekor, és csökkenti a típusbiztonságot.
    • A List<T> egy általános kollekció (T — meghatározott típus), amely szigorúan a megadott típusú elemeket tárolja, biztosítva a típusbiztonságot és kiküszöbölve a típuskonverzió szükségességét.
  • Teljesítmény:

    • Az ArrayList-be való elem hozzáadása és kivétele lassabb lehet a boxing és unboxing miatt.
    • A List<T> általában gyorsabb, különösen értéktípusok esetén, mivel nincs boxing/unboxing.
  • Típusbiztonság:

    • Az ArrayList különböző típusú elemeket tartalmazhat, ami futás közben hibákhoz vezethet.
    • A List<T> típusbiztonságot nyújt fordítási időben.
  • Implementáció:

    • Az ArrayList a System.Collections névtérben található.
    • A List<T> a System.Collections.Generic névtérben található.
  • Használat:

    • Az ArrayList elavultnak számít, és nem ajánlott új kódban használni.
    • A List<T> a preferált választás a legtöbb szcenárióban.

Példa:

// ArrayList használata
System.Collections.ArrayList arrayList = new System.Collections.ArrayList();
arrayList.Add(1);       // int csomagolva object-be
arrayList.Add("szöveg"); // string object-ként tárolva

int szám = (int)arrayList[0]; // típuskonverzió szükséges

// List<T> használata
System.Collections.Generic.List<int> list = new System.Collections.Generic.List<int>();
list.Add(1); // int hozzáadása

// int szám = list[0]; // típuskonverzió nem szükséges

Összehasonlító táblázat:

Jellemző ArrayList List<T>
Tipizálás Nem típusos (object) Generikus (T)
Teljesítmény Lehetséges boxing/unboxing Magasabb, boxing/unboxing nélkül
Típusbiztonság Alacsony Magas (fordítási időben)
Névtér System.Collections System.Collections.Generic
Ajánlott Nem ajánlott Ajánlott