Sobes.tech
Junior

Mis vahe on ArrayListil ja Listil C#-s?

sobes.tech AI

Vastus AI-lt

ArrayList ja List erinevused C#-s on järgmised:

  • Tüübistamine:

    • ArrayList hoiab elemente object tüübis (mitmetüübiline kogu), mis nõuab tüübimuundamist elementide saamisel ja vähendab tüübiohutust.
    • List<T> on üldine kogu (T — määratud tüüp), hoiab ainult määratud tüüpi elemente, tagab tüübiohutuse ja ei nõua tüübimuundamist.
  • Jõudlus:

    • ArrayList-i elementide lisamine ja saamine võib olla aeglasem, kuna on vaja pakendamist (boxing) ja pakendist välja võtmist (unboxing) väärtustüüpide puhul.
    • List<T> on tavaliselt kiirem, eriti väärtustüüpide puhul, kuna pakendamist ja pakendist välja võtmist ei toimu.
  • Tüübistamise ohutus:

    • ArrayList võib sisaldada erinevat tüüpi elemente, mis võib põhjustada vigu jooksuaegsel.
    • List<T> tagab tüübistamise ohutuse kompileerimise ajal.
  • Teostus:

    • ArrayList asub nimedes System.Collections.
    • List<T> asub nimedes System.Collections.Generic.
  • Kasutamine:

    • ArrayList on vananenud ja seda ei soovitata uues koodis kasutada.
    • List<T> on eelistatud valik enamikul juhtudel.

Näide kasutamisest:

// ArrayList kasutamine
System.Collections.ArrayList arrayList = new System.Collections.ArrayList();
arrayList.Add(1);       // int pakitakse object-iks
arrayList.Add("rida"); // string säilitatakse kui object

int arv = (int)arrayList[0]; // tüübimuundamine vajalik

// List<T> kasutamine
System.Collections.Generic.List<int> nimekiri = new System.Collections.Generic.List<int>();
nimekiri.Add(1); // lisame int

// int arv = nimekiri[0]; // tüübimuundamine ei ole vajalik

Võrdlustabel:

Omadus ArrayList List<T>
Tüübistamine Mitte-tüübiline (object) Üldine (T)
Jõudlus Võib olla boxing/unboxing Kõrgem, ilma boxing/unboxing
Tüübiohutust Madal Kõrge (kompilatsiooni ajal)
Nimespetsifikatsioon System.Collections System.Collections.Generic
Soovitus Ei soovitata Soovitatav