Sobes.tech
Junior

Ի՞նչ է տարբերությունը ArrayList և List-ի միջև C#-ում։

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
Առաջարկում Չի առաջարկվում Առաջարկվում է