C# ArrayList Tutorial med eksempler

⚡ Smart opsummering

ArrayList i C# er en dynamisk samling fra System.Collections-navnerummet, der gemmer elementer som objekter. I modsætning til et array vokser og krymper det under kørsel og kan indeholde heltal, strenge og boolske værdier sammen i én liste.

  • 🔄 Dynamisk størrelsesindstilling: ArrayList tilføjer og fjerner elementer under kørsel, så du fastsætter ikke antallet af elementer på forhånd som i et array.
  • 📦 Objektlagring: Hvert element gemmes som et objekt, hvilket gør det muligt for én ArrayList at indeholde blandede datatyper såsom int, string og bool.
  • Kernemetoder: Tilføj, Indsæt, Fjern, FjernAt, Indeholder og Sortér dækker de daglige operationer på en ArrayList.
  • 📊 Antal og kapacitet: Egenskaben Antal returnerer det aktuelle antal elementer, mens Kapacitet er den allokerede lagerplads.
  • Moderne valg: Microsoft anbefaler den generiske liste til ny kode, fordi den tilføjer typesikkerhed under kompilering og undgår boksning.
  • 🤖 AI assistance: GitHub Copilot understøtter ArrayList-kode, og ML.NET-pipelines sender data gennem C#-samlingstyper.

C# ArrayList

Hvad er ArrayList i C#?

ArrayList-samlingen ligner Arrays datatype i C#. Den største forskel er den dynamiske karakter af array-listesamlingen.

For arrays skal du definere antallet af elementer, som arrayet kan indeholde på tidspunktet for array-erklæringen. Men i tilfælde af Array List-samlingen behøver dette ikke at gøres på forhånd. Elementer kan tilføjes eller fjernes fra Array List-samlingen på et hvilket som helst tidspunkt. Lad os se mere detaljeret på de tilgængelige operationer for array-listesamlingen.

Erklæring af en Array List

Erklæringen for en ArrayList er angivet nedenfor. En array-liste oprettes ved hjælp af ArrayList Datatype. Det "nye" nøgleord bruges til at oprette et objekt i en ArrayList. Objektet tildeles derefter variablen a1. Så nu vil variablen a1 blive brugt til at få adgang til de forskellige elementer i arraylisten.

ArrayList a1 = new ArrayList()

Tilføjelse af elementer til en matrix

Tilføj metoden bruges til at tilføje et element til ArrayList. Tilføj metoden kan bruges til at tilføje en hvilken som helst slags datatypeelement til arraylisten. Så du kan tilføje et heltal eller en streng eller endda en boolsk værdi til matrixlisten. Den generelle syntaks for additionsmetoden er angivet nedenfor

ArrayList.add(element)

Nedenfor er nogle eksempler på, hvordan "tilføj"-metoden kan bruges. Tilføj-metoden kan bruges til at tilføje forskellige datatyper til Array List-samlingen.

Nedenfor kan du se eksempler på, hvordan vi kan tilføje Integer's Strings og endda booleske værdier til Array List-samlingen.

  • a1.add(1) – Dette vil tilføje en heltalsværdi til samlingen
  • a1.add(“Eksempel”) – Dette vil tilføje en strengværdi til samlingen
  • a1.add(true) – Dette vil tilføje en boolsk værdi til samlingen

Lad os nu se, at dette fungerer på kodeniveau. Al den nedennævnte kode vil blive skrevet til vores konsolapplikation. Koden vil blive skrevet til vores Program.cs fil.

I programmet nedenfor vil vi skrive koden for at oprette en ny array-liste. Vi vil også vise for at tilføje elementer og for at vise elementerne i Array-listen.

ArrayList i C#

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 Forklaring:-

  1. Det første trin bruges til at erklære vores Array List. Her erklærer vi a1 som en variabel til at holde elementerne i vores array-liste.
  2. Vi bruger derefter nøgleordet add til at tilføje tallet 1, strengen "Eksempel" og den boolske værdi 'true' til arraylisten.
  3. Vi bruger derefter Console.WriteLine-metoden til at vise værdien af ​​hvert array-listeelement til konsollen. Du vil bemærke, at ligesom arrays kan vi få adgang til elementerne via deres indekspositioner. Så for at få adgang til den første position i Array List bruger vi [0] indekspositionen. Og så videre og så videre.

Hvis ovenstående kode er indtastet korrekt, og programmet køres, vil følgende output blive vist.

Output:

ArrayList i C#

Fra outputtet kan du se, at alle elementerne fra arraylisten sendes til konsollen.

Lad os se på nogle flere metoder, som er tilgængelige som en del af ArrayList.

Tælle

Denne metode bruges til at få antallet af elementer i ArrayList-samlingen. Nedenfor er den generelle syntaks for denne erklæring.

ArrayList.Count() – Denne metode returnerer antallet af elementer, som arraylisten indeholder.

Indeholder

Denne metode bruges til at se, om et element er til stede i ArrayList-samlingen. Nedenfor er den generelle syntaks for denne erklæring

ArrayList.Contains(element) – Denne metode vil returnere sand, hvis elementet er til stede på listen, ellers vil det returnere falsk.

FjernKl

Denne metode bruges til at fjerne et element på en bestemt position i ArrayList-samlingen. Nedenfor er den generelle syntaks for denne erklæring

ArrayList.RemoveAt(index) – Denne metode fjerner et element fra en bestemt position på Array List.

Lad os nu se, at dette fungerer på kodeniveau. Al den nedennævnte kode vil blive skrevet til vores konsolapplikation. Koden vil blive skrevet til vores Program.cs fil.

I nedenstående program vil vi skrive koden for at se, hvordan vi kan bruge de ovennævnte metoder.

ArrayList i C#

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 Forklaring:-

  1. Så den første ejendom, vi ser, er Greve-ejendommen. Vi får egenskaben Count for arraylisten a1 og skriver den derefter til konsollen.
  2. I anden del bruger vi Contains-metoden til at se, om ArrayList a1 indeholder elementet 2. Vi skriver derefter resultatet til konsollen via Writeline-kommandoen.
  3. Til sidst, for at vise metoden Fjern element, udfører vi nedenstående trin,
    1. Først skriver vi værdien af ​​elementet ved indeksposition 1 på arraylisten til konsollen.
    2. Derefter fjerner vi elementet på indeksposition 1 af arraylisten.
    3. Til sidst skriver vi igen værdien af ​​elementet ved indeksposition 1 på arraylisten til konsollen. Dette sæt trin vil give en rimelig idé om, hvorvidt fjernelsesmetoden vil fungere, som den skal være.

Hvis ovenstående kode er indtastet korrekt, og programmet køres, vil følgende output blive vist.

Output:

ArrayList i C#

Hvorfor er den sidste værdi sand?

Hvis du ser rækkefølgen af ​​hændelser, fjernes elementet Eksempel fra arrayet, fordi dette er på position 1. Position 1 af arrayet bliver derefter erstattet af det, der var i position 2 tidligere, med værdien 'sand'

Sådan gennemløber du en C# ArrayList

Det er en almindelig opgave at læse hvert element i en ArrayList. Fordi en ArrayList gemmer sine elementer som objekter, kan du besøge dem med en foreach-løkke eller med en for-løkke, der bruger Count-egenskaben. Foreach-løkken er den enkleste måde, da den gennemgår hvert element i rækkefølge uden at have brug for et indeks.

Eksemplet nedenfor opretter en ArrayList af strenge og udskriver hver værdi på sin egen linje. Koden er skrevet i Program.cs-filen i en konsolapplikation.

Trin 1) Importer navneområdet System.Collections, og opret en ArrayList med tre elementer.

Trin 2) Brug en foreach-løkke til at læse hvert element som et objekt og skrive det til konsollen.

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 Forklaring:-

  1. Navneområdet System.Collections importeres, så ArrayList-typen er tilgængelig for programmet.
  2. Tre strengværdier tilføjes til ArrayList med Add-metoden.
  3. Foreach-løkken læser hvert element som et objekt, og Console.WriteLine-metoden udskriver det på en ny linje.

Når programmet kører, udskriver det Java, Pythonog Kotlin på separate linjer. En for-løkke med Count-egenskaben ville give det samme resultat, samtidig med at du kunne bruge indekspositionen for hvert element.

C# ArrayList-metoder og -egenskaber

ArrayList-klassen indeholder mange indbyggede metoder og egenskaber til at administrere dens elementer. Udover at tilføje og fjerne elementer kan den sortere, søge og vende samlingen. De mest almindelige medlemmer er anført nedenfor.

Medlem Beskrivelse
Tilføj Tilføjer et enkelt element til slutningen af ​​ArrayList.
indsatte Tilføjer et element på en bestemt indeksposition.
Fjern Fjerner den første forekomst af et bestemt element.
FjernKl Fjerner elementet på den givne indeksposition.
Slet valg Fjerner alle elementer fra ArrayList.
Sort Sorterer elementerne i stigende rækkefølge.
Reverse Reverserækkefølgen af ​​elementerne på listen.
Indeholder Returnerer sandt, hvis et givet element findes i listen.
IndeksOf Returnerer indekspositionen for et givet element.
Tælle Egenskab, der returnerer antallet af gemte elementer.
Kapacitet En egenskab, der returnerer antallet af elementer, som listen kan indeholde.

Disse medlemmer lader dig tilføje, finde, sortere og fjerne elementer uden selv at skrive logikken, hvilket er en af ​​de største fordele ved at bruge en samling i forhold til et almindeligt array.

Forskellen mellem ArrayList og List i C#

Både en ArrayList og en generisk Liste gemmer en gruppe af elementer, der kan vokse under kørsel, men som adskiller sig i, hvordan de håndterer typer. At kende forskellen hjælper dig med at vælge den rigtige til moderne C#-kode.

De vigtigste forskelle er anført nedenfor:

  • Type sikkerhed: En ArrayList gemmer hvert element som et objekt, mens en List er bundet til én deklareret type og kontrolleres ved kompilering.
  • Ydelse: En ArrayList indrammer og udpakker værdityper som int, hvilket koster tid, hvorimod en List undgår indrammelse for bedre hastighed.
  • Navneområde: ArrayList findes i System.Collections, mens List findes i System.Collections.Generic.
  • støbning: Læsning fra en ArrayList kræver ofte en tilbageføring til den oprindelige type, men en List returnerer den korrekte type direkte.
  • Anbefaling: Microsoft anbefaler List til nyudvikling, fordi den er sikrere, hurtigere og nemmere at læse.

Kort sagt er en ArrayList nyttig til at forstå ældre kode eller blandet-type lagring, mens en List er det foretrukne valg til de fleste applikationer i dag.

Ofte Stillede Spørgsmål

Et array har en fast størrelse og gemmer én datatype, der er sat ved deklaration. En ArrayList vokser og krymper under kørsel og gemmer hvert element som et objekt, så den kan indeholde blandede datatyper i en enkelt liste.

ArrayList fjernes ikke, men Microsoft anbefaler det ikke til nyudvikling. Den generiske List-klasse i System.Collections.Generic foretrækkes, fordi den tilføjer typesikkerhed og bedre ydeevne, så det meste moderne C#-kode bruger List i stedet.

Fordi en ArrayList gemmer elementer som objekter, vil tilføjelse af en værditype som int indpakke den i et objekt, hvilket er en boks. Læsning af den tilbage og casting til den oprindelige type er en udpakning. Begge trin koster ydeevne, hvilket List undgår.

En ArrayList understøtter flere læsere på én gang, men det er ikke garanteret, at instansmedlemmer er trådsikre, når samlingen ændres. For sikre flertrådede skrivninger skal den pakkes ind i ArrayListen.Syncden hormoniserede metode eller brug i stedet en samtidig indsamling.

Antal er antallet af elementer, der i øjeblikket er gemt i ArrayList. Kapacitet er det samlede antal elementer, den kan indeholde, før den ændrer størrelse. Kapacitet er altid lig med eller større end Antal og vokser automatisk, efterhånden som du tilføjer elementer.

Du kan kopiere elementerne til en stærkt typebestemt liste med metoderne Cast og ToList, eller kalde ToArray-metoden for at få et objektmatrix. Konvertering til en generisk liste er almindelig, fordi det gendanner typesikkerheden.

Ja. GitHub Copilot kan skrive ArrayList-deklarationer, tilføje og fjerne kald og loope fra en kort kommentar eller et metodenavn. Den foreslår ofte også den generiske List-version, da det er den anbefalede samling til ny C#-kode.

ML.NET læser normalt træningsdata gennem generiske samlinger som List og IEnumerable, som knyttes til dens IDataView-pipeline. En ikke-generisk ArrayList bruges sjældent direkte, fordi en stærkt typebestemt samling holder maskinlæringsdataene klare og typesikre.

Opsummer dette indlæg med: