C# ArrayListi õpetus koos näidetega

⚡ Nutikas kokkuvõte

C#-s on ArrayList dünaamiline kogum System.Collections nimeruumist, mis salvestab elemente objektidena. Erinevalt massiivist kasvab ja kahaneb see käitusajal ning saab ühes loendis hoida täisarve, stringe ja Boole'i ​​väärtusi.

  • 🔄 Dünaamiline suuruse muutmine: ArrayList lisab ja eemaldab elemente käitusajal, seega ei fikseerita elementide arvu ette nagu massiivi puhul.
  • 📦 Objektide salvestamine: Iga element salvestatakse objektina, mis võimaldab ühel ArrayListil hoida segatud andmetüüpe, näiteks int, string ja bool.
  • Põhimeetodid: Lisamine, sisestamine, eemaldamine, eemaldamine, sisaldab ja sortimine hõlmavad ArrayListi igapäevaseid toiminguid.
  • 📊 Arv ja mahutavus: Atribuut „Count” tagastab praeguse üksuste arvu, samas kui „Capacity” näitab eraldatud salvestusruumi.
  • Moodne valik: Microsoft soovitab uue koodi jaoks üldist loendit (List), kuna see lisab kompileerimisaegset tüübiturvalisust ja väldib kastikujulist tüüpide eristamist.
  • 🤖 AI abi: GitHub Copilot toetab ArrayListi koodi ja ML.NET torujuhtmed edastavad andmeid C# kogumitüüpide kaudu.

C# ArrayList

Mis on ArrayList C#-s?

ArrayListi kollektsioon on sarnane Massiraadid andmetüüp C# keeles. Suurim erinevus on massiiviloendikogu dünaamiline olemus.

Massiivide jaoks peate määratlema elementide arvu, mida massiiv võib massiivi deklareerimise ajal sisaldada. Kuid kogu Array List puhul pole seda vaja eelnevalt teha. Elemente saab massiiviloendi kollektsioonist igal ajal lisada või sealt eemaldada. Vaatame üksikasjalikumalt massiivi loendikogu jaoks saadaolevaid toiminguid.

Massiiviloendi deklaratsioon

ArrayListi deklaratsioon on toodud allpool. Massiiviloend luuakse andmetüübi ArrayList abil. Märksõna "uus" kasutatakse ArrayListi objekti loomiseks. Seejärel määratakse objekt muutujale a1. Nii et nüüd kasutatakse massiivi loendi erinevatele elementidele juurdepääsuks muutujat a1.

ArrayList a1 = new ArrayList()

Elementide lisamine massiivi

Lisamismeetodit kasutatakse elemendi lisamiseks loendisse ArrayList. Lisamismeetodit saab kasutada mis tahes andmetüübi elemendi lisamiseks massiivi loendisse. Nii saate massiivi loendisse lisada täisarvu või stringi või isegi tõeväärtuse. Lisamismeetodi üldine süntaks on toodud allpool

ArrayList.add(element)

Allpool on mõned näited lisamismeetodi kasutamisest. Lisamismeetodit saab kasutada mitmesuguste andmetüüpide lisamiseks massiiviloendi kogusse.

Allpool näete näiteid selle kohta, kuidas saame massiiviloendi kogusse lisada täisarvu stringe ja isegi Boole'i ​​väärtusi.

  • a1.add(1) – see lisab kogule täisarvu väärtuse
  • a1.add("Näide") – see lisab kogule stringi väärtuse
  • a1.add(true) – see lisab kogule Boole'i ​​väärtuse

Nüüd vaatame, kuidas see töötab koodi tasemel. Kogu allpool nimetatud kood kirjutatakse meie konsoolirakendusse. Kood kirjutatakse meie faili Program.cs.

Allolevas programmis kirjutame uue massiiviloendi loomiseks koodi. Näitame ka elementide lisamist ja massiivi loendi elementide kuvamist.

ArrayList C#-s

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1[0]);	  
   Console.WriteLine(a1[1]);
   Console.WriteLine(a1[2]);
   Console.ReadKey();
  }
 }
}

Code Selgitus:-

  1. Esimest sammu kasutatakse meie massiiviloendi deklareerimiseks. Siin deklareerime a1 muutujaks meie massiiviloendi elementide hoidmiseks.
  2. Seejärel kasutame massiivi loendisse numbri 1 , stringi "Example" ja Boole'i ​​väärtuse "true" lisamiseks lisa märksõna.
  3. Seejärel kasutame meetodit Console.WriteLine, et kuvada konsooli iga massiivi loendite elemendi väärtus. Märkate, et nagu massiivid, pääseme elementidele juurde nende indeksi positsioonide kaudu. Nii et massiiviloendi esimesele positsioonile pääsemiseks kasutame indeksi positsiooni [0]. Ja nii edasi ja nii edasi.

Kui ülaltoodud kood on õigesti sisestatud ja programm käivitatakse, kuvatakse järgmine väljund.

Väljund:

ArrayList C#-s

Väljundist näete, et kõik massiiviloendi elemendid saadetakse konsooli.

Vaatame veel mõnda meetodit, mis on saadaval ArrayListi osana.

Loendama

Seda meetodit kasutatakse ArrayListi kogus olevate üksuste arvu saamiseks. Allpool on selle avalduse üldine süntaks.

ArrayList.Count() – see meetod tagastab massiiviloendis sisalduvate elementide arvu.

Sisaldab

Seda meetodit kasutatakse selleks, et näha, kas element on ArrayListi kogus olemas. Allpool on selle avalduse üldine süntaks

ArrayList.Contains(element) – see meetod tagastab tõese, kui element on loendis olemas, vastasel juhul tagastab see vale.

EemaldaAt

Seda meetodit kasutatakse elemendi eemaldamiseks kindlast positsioonist ArrayListi kogus. Allpool on selle avalduse üldine süntaks

ArrayList.RemoveAt(index) – see meetod eemaldab elemendi massiiviloendi kindlast positsioonist.

Nüüd vaatame, kuidas see töötab koodi tasemel. Kogu allpool nimetatud kood kirjutatakse meie konsoolirakendusse. Kood kirjutatakse meie faili Program.cs.

Allolevas programmis kirjutame koodi, et näha, kuidas saame ülalnimetatud meetodeid kasutada.

ArrayList C#-s

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1.Count);
   Console.WriteLine(a1.Contains(2));
   Console.WriteLine(a1[1]);
   a1.RemoveAt(1);
   Console.WriteLine(a1[1]);
   Console.ReadKey();
  }
 }
}

Code Selgitus:-

  1. Seega on esimene omadus, mida me näeme, krahv. Me saame massiiviloendi a1 atribuudi Count ja kirjutame selle seejärel konsooli.
  2. Teises osas kasutame Contains meetodit, et näha, kas ArrayList a1 sisaldab elementi 2. Seejärel kirjutame tulemuse käsu Writeline kaudu konsooli.
  3. Lõpuks, elemendi eemaldamise meetodi tutvustamiseks teeme alltoodud toimingud,
    1. Kõigepealt kirjutame konsooli massiiviloendi positsioonil Indeks 1 oleva elemendi väärtuse.
    2. Seejärel eemaldame massiiviloendi indeksi positsioonil 1 oleva elemendi.
    3. Lõpuks kirjutame uuesti konsooli massiiviloendi positsioonil Index 1 oleva elemendi väärtuse. See toimingute kogum annab õiglase ettekujutuse, kas eemaldamismeetod töötab nii, nagu peaks.

Kui ülaltoodud kood on õigesti sisestatud ja programm käivitatakse, kuvatakse järgmine väljund.

Väljund:

ArrayList C#-s

Miks on viimane väärtus tõene?

Kui näete sündmuste jada, eemaldatakse massiivist element Näide, kuna see asub positsioonil 1. Massiivi positsioon 1 asendatakse seejärel sellega, mis oli varem positsioonis 2, mille väärtus on "true".

Kuidas C# ArrayListi tsüklit läbida

ArrayListi iga elemendi lugemine on tavaline ülesanne. Kuna ArrayList salvestab oma elemendid objektidena, saab neid külastada foreach-tsükliga või for-tsükliga, mis kasutab omadust Count. Foreach-tsükkel on lihtsaim viis, kuna see käib iga elemendi läbi järjekorras ilma indeksit vajamata.

Allolev näide loob stringidest ArrayListi ja prindib iga väärtuse eraldi reale. Kood on kirjutatud konsoolirakenduse faili Program.cs.

Step 1) Impordi nimeruum System.Collections ja loo kolme elemendiga ArrayList.

Step 2) Kasutage foreach-tsüklit iga elemendi objektina lugemiseks ja konsoolile kirjutamiseks.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add("Java");
   a1.Add("Python");
   a1.Add("Kotlin");
   foreach (object item in a1)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Code Selgitus:-

  1. Nimeruum System.Collections imporditakse, et ArrayList tüüp oleks programmile saadaval.
  2. Kolm stringiväärtust lisatakse ArrayListile meetodi Add abil.
  3. Foreach tsükkel loeb iga elemendi objektina ja Console.WriteLine meetod prindib selle uuele reale.

Kui programm käivitatakse, prindib see välja Java, Pythonja Kotlin eraldi ridadel. Count omadusega for-tsükkel annaks sama tulemuse, võimaldades samal ajal kasutada iga elemendi indeksipositsiooni.

C# ArrayListi meetodid ja omadused

ArrayList klass pakub oma elementide haldamiseks palju sisseehitatud meetodeid ja omadusi. Lisaks elementide lisamisele ja eemaldamisele saab see sortida, otsida ja kogumit ümber pöörata. Kõige levinumad liikmed on loetletud allpool.

Liige Kirjeldus
lisama Lisab ArrayListi lõppu ühe elemendi.
Sisesta Lisab elemendi kindlale indeksipositsioonile.
eemalda Eemaldab konkreetse elemendi esimese esinemise.
EemaldaAt Eemaldab elemendi antud indeksipositsioonilt.
Puhasta valikud Eemaldab ArrayListist kõik elemendid.
Sort Sorteerib elemendid kasvavas järjekorras.
Reverse Reverses elementide järjekord loendis.
Sisaldab Tagastab väärtuse tõene (true), kui antud element loendis eksisteerib.
IndeksOf Tagastab antud elemendi indeksipositsiooni.
Loendama Omadus, mis tagastab salvestatud elementide arvu.
Võimsus Omadus, mis tagastab loendis olevate elementide arvu.

Need liikmed võimaldavad teil elemente lisada, leida, järjestada ja eemaldada ilma loogikat ise kirjutamata, mis on üks peamisi eeliseid kollektsiooni kasutamisel tavalise massiivi ees.

Erinevus ArrayListi ja Listi vahel C#-s

Nii ArrayList kui ka üldine nimekiri salvestada üksuste rühma, mis saab käitusajal kasvada, kuid need erinevad tüüpide käsitlemise poolest. Erinevuse teadmine aitab teil valida tänapäevase C# koodi jaoks õige.

Peamised erinevused on loetletud allpool:

  • Tüübi ohutus: ArrayList salvestab iga elemendi objektina, samas kui List on seotud ühe deklareeritud tüübiga ja seda kontrollitakse kompileerimise ajal.
  • Performance: ArrayList kastib ja eemaldab kastidest väärtustüüpe, näiteks int, mis on aeganõudev, samas kui List väldib kastimist parema kiiruse saavutamiseks.
  • Nimeruum: ArrayList asub kaustas System.Collections, List aga kaustas System.Collections.Generic.
  • casting: ArrayListist lugemine nõuab sageli tagasi algsele tüübile teisendamist, kuid List tagastab otse õige tüübi.
  • Soovitus: Microsoft soovitab uute arenduste jaoks Listi, kuna see on turvalisem, kiirem ja hõlpsamini loetav.

Lühidalt öeldes on ArrayList kasulik vanema koodi või segatüüpi salvestuse mõistmiseks, samas kui List on tänapäeval enamiku rakenduste jaoks eelistatud valik.

KKK

Massiivil on fikseeritud suurus ja see salvestab deklareerimisel ühe andmetüübi komplekti. ArrayList kasvab ja kahaneb käitusajal ning salvestab iga elemendi objektina, seega saab see ühes loendis hoida segatud andmetüüpe.

ArrayListi ei eemaldata, aga Microsoft ei soovita seda uute arenduste jaoks. Eelistatakse üldist List-klassi System.Collections.Generic failis, kuna see lisab tüübiturvalisust ja paremat jõudlust, seega kasutab enamik tänapäevaseid C#-koode selle asemel List-klassi.

Kuna ArrayList salvestab elemente objektidena, siis väärtuse tüübi (nt int) lisamine mähib selle objekti sisse, mis on karbistamine. Selle tagasilugemine ja algsele tüübile teisendamine on karbistamine. Mõlemad sammud maksavad jõudlust, mida List väldib.

ArrayList toetab korraga mitut lugejat, kuid eksemplari liikmete lõimekindel olemine ei ole garanteeritud, kui kogumit muudetakse. Ohutu mitmelõimelise kirjutamise jaoks mähkige see ArrayListi.Synckroonitud meetodit või kasutage selle asemel samaaegset kogumist.

„Count” on ArrayListi salvestatud elementide arv. „Capacity” on elementide koguarv, mida see enne suuruse muutmist mahutab. „Capacity” on alati võrdne või suurem kui „Count” ja kasvab automaatselt elementide lisamisel.

Saate üksused tugevalt tüübitud loendisse kopeerida meetodite Cast ja ToList abil või kutsuda meetodi ToArray, et saada objektimassiiv. Üldiseks loendiks teisendamine on tavaline, kuna see taastab tüübiohutuse.

Jah. GitHub Copilot saab kirjutada ArrayListi deklaratsioone, lisada ja eemaldada kõnesid ning tsükleid lühikese kommentaari või meetodi nime põhjal. Sageli soovitab see ka üldist Listi versiooni, kuna see on uue C# koodi jaoks soovitatav kogum.

ML.NET loeb treeningandmeid tavaliselt üldiste kogumite (nt List ja IEnumerable) kaudu, mis on seotud selle IDataView torujuhtmega. Mitteüldiseid ArrayList'e kasutatakse harva otse, sest tugevalt tüübitud kogum hoiab masinõppe andmed selged ja tüübikindlad.

Võta see postitus kokku järgmiselt: