Handledning för C# ArrayList med exempel

⚡ Smart sammanfattning

ArrayList i C# är en dynamisk samling från namnrymden System.Collections som lagrar element som objekt. Till skillnad från en array växer och krymper den vid körning och kan hålla heltal, strängar och booleska värden tillsammans i en lista.

  • 🔄 Dynamisk storleksändring: ArrayList lägger till och tar bort element under körning, så du fixerar inte antalet element i förväg som i en array.
  • 📦 Objektlagring: Varje element lagras som ett objekt, vilket gör att en ArrayList kan innehålla blandade datatyper som int, string och bool.
  • Kärnmetoder: Lägg till, infoga, ta bort, ta bort vid, innehåller och sortera täcker de dagliga operationerna på en ArrayList.
  • 📊 Antal och kapacitet: Egenskapen Count returnerar det aktuella antalet objekt, medan Capacity är det allokerade lagringsutrymmet.
  • Modernt val: Microsoft rekommenderar den generiska listan för ny kod eftersom den lägger till typsäkerhet vid kompilering och undviker boxing.
  • 🤖 AI-hjälp: GitHub Copilot stöder ArrayList-kod och ML.NET-pipelines skickar data genom C#-samlingstyper.

C# ArrayList

Vad är ArrayList i C#?

ArrayList-samlingen liknar arrayer datatyp i C#. Den största skillnaden är den dynamiska karaktären hos arraylistsamlingen.

För matriser måste du definiera antalet element som matrisen kan hålla vid tidpunkten för matrisdeklaration. Men i fallet med Array List-samlingen behöver detta inte göras i förväg. Element kan läggas till eller tas bort från samlingen Array List när som helst. Låt oss titta på de operationer som är tillgängliga för arraylistsamlingen mer i detalj.

Deklaration av en matrislista

Deklarationen för en ArrayList finns nedan. En arraylista skapas med hjälp av ArrayList Datatype. Nyckelordet "nya" används för att skapa ett objekt i en ArrayList. Objektet tilldelas sedan variabeln a1. Så nu kommer variabeln a1 att användas för att komma åt de olika elementen i arraylistan.

ArrayList a1 = new ArrayList()

Lägga till element i en array

Add-metoden används för att lägga till ett element i ArrayList. Add-metoden kan användas för att lägga till vilken typ av datatyp som helst till arraylistan. Så du kan lägga till ett heltal eller en sträng eller till och med ett booleskt värde till arraylistan. Den allmänna syntaxen för additionsmetoden ges nedan

ArrayList.add(element)

Nedan finns några exempel på hur metoden ”lägg till” kan användas. Add-metoden kan användas för att lägga till olika datatyper till Array List-samlingen.

Nedan kan du se exempel på hur vi kan lägga till heltals strängar och till och med booleska värden till samlingen Array List.

  • a1.add(1) – Detta kommer att lägga till ett heltalsvärde till samlingen
  • a1.add(“Exempel”) – Detta kommer att lägga till ett strängvärde till samlingen
  • a1.add(true) – Detta kommer att lägga till ett booleskt värde till samlingen

Låt oss nu se att detta fungerar på kodnivå. All ovan nämnda kod kommer att skrivas till vår konsolapplikation. Koden kommer att skrivas till vår Program.cs-fil.

I programmet nedan kommer vi att skriva koden för att skapa en ny arraylista. Vi kommer också att visa för att lägga till element och för att visa elementen i Array-listan.

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 Förklaring:-

  1. Det första steget används för att deklarera vår Array List. Här deklarerar vi a1 som en variabel för att hålla elementen i vår arraylista.
  2. Vi använder sedan nyckelordet add för att lägga till siffran 1 , strängen "Exempel" och det booleska värdet "true" till arraylistan.
  3. Vi använder sedan Console.WriteLine-metoden för att visa värdet för varje array listelement till konsolen. Du kommer att märka att precis som arrayer kan vi komma åt elementen via deras indexpositioner. Så för att komma åt den första positionen i Array List använder vi [0] indexpositionen. Och så vidare.

Om ovanstående kod anges korrekt och programmet körs kommer följande utdata att visas.

Produktion:

ArrayList i C#

Från utgången kan du se att alla element från arraylistan skickas till konsolen.

Låt oss titta på några fler metoder som är tillgängliga som en del av ArrayList.

Att Räkna

Denna metod används för att få antalet objekt i ArrayList-samlingen. Nedan är den allmänna syntaxen för detta uttalande.

ArrayList.Count() – Denna metod returnerar antalet element som arraylistan innehåller.

innehåller

Denna metod används för att se om ett element finns i ArrayList-samlingen. Nedan är den allmänna syntaxen för detta uttalande

ArrayList.Contains(element) – Den här metoden returnerar true om elementet finns i listan, annars returnerar det false.

Ta bortAt

Denna metod används för att ta bort ett element på en specifik position i ArrayList-samlingen. Nedan är den allmänna syntaxen för detta uttalande

ArrayList.RemoveAt(index) – Denna metod tar bort ett element från en specifik position i Arraylistan.

Låt oss nu se att detta fungerar på kodnivå. All ovan nämnda kod kommer att skrivas till vår konsolapplikation. Koden kommer att skrivas till vår Program.cs-fil.

I programmet nedan kommer vi att skriva koden för att se hur vi kan använda de ovan nämnda metoderna.

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 Förklaring:-

  1. Så den första egenskapen vi ser är Count-egendomen. Vi hämtar egenskapen Count för arraylistan a1 och skriver den sedan till konsolen.
  2. I den andra delen använder vi metoden Contains för att se om ArrayList a1 innehåller elementet 2. Vi skriver sedan resultatet till konsolen via kommandot Writeline.
  3. Slutligen, för att visa upp metoden Ta bort element, utför vi stegen nedan,
    1. Först skriver vi värdet på elementet vid indexposition 1 i arraylistan till konsolen.
    2. Sedan tar vi bort elementet på indexposition 1 i arraylistan.
    3. Slutligen skriver vi igen värdet på elementet vid Indexposition 1 i arraylistan till konsolen. Denna uppsättning steg ger en rättvis uppfattning om huruvida borttagningsmetoden kommer att fungera som den ska.

Om ovanstående kod anges korrekt och programmet körs kommer följande utdata att visas.

Produktion:

ArrayList i C#

Varför är det sista värdet sant?

Om du ser händelseförloppet tas elementet Exempel bort från arrayen eftersom detta är på position 1. Position 1 i arrayen ersätts då av det som var i position 2 tidigare med värdet 'true'

Hur man loopar igenom en C# ArrayList

Att läsa varje element i en ArrayList är en vanlig uppgift. Eftersom en ArrayList lagrar sina objekt som objekt kan du besöka dem med en foreach-loop eller med en for-loop som använder Count-egenskapen. Foreach-loopen är det enklaste sättet, eftersom den går igenom varje element i ordning utan att behöva ett index.

Exemplet nedan skapar en ArrayList med strängar och skriver ut varje värde på en egen rad. Koden skrivs i Program.cs-filen i ett konsolprogram.

Steg 1) Importera namnrymden System.Collections och skapa en ArrayList med tre objekt.

Steg 2) Använd en foreach-loop för att läsa varje element som ett objekt och skriva det till konsolen.

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 Förklaring:-

  1. Namnrymden System.Collections importeras så att ArrayList-typen är tillgänglig för programmet.
  2. Tre strängvärden läggs till i ArrayList med Add-metoden.
  3. Foreach-loopen läser varje objekt som ett objekt, och Console.WriteLine-metoden skriver ut det på en ny rad.

När programmet körs skriver det ut Java, Pythonoch Kotlin på separata rader. En for-loop med egenskapen Count skulle ge samma resultat samtidigt som du låter dig använda indexpositionen för varje element.

C# ArrayList-metoder och egenskaper

ArrayList-klassen har många inbyggda metoder och egenskaper för att hantera dess element. Förutom att lägga till och ta bort objekt kan den sortera, söka och vända samlingen. De vanligaste medlemmarna listas nedan.

Medlem BESKRIVNING
Lägg till Lägger till ett enda element i slutet av ArrayList.
Insert Lägger till ett element på en specifik indexposition.
ta bort Tar bort den första förekomsten av ett specifikt element.
Ta bortAt Tar bort elementet vid den givna indexpositionen.
Rensa Tar bort alla element från ArrayList.
Svart Sorterar elementen i stigande ordning.
Reverse Reverses ordningen på elementen i listan.
innehåller Returnerar sant om ett givet element finns i listan.
IndexOf Returnerar indexpositionen för ett givet element.
Att Räkna Egenskap som returnerar antalet lagrade element.
Kapacitet Egenskap som returnerar antalet element som listan kan innehålla.

Dessa medlemmar låter dig lägga till, hitta, ordna och ta bort objekt utan att behöva skriva logiken själv, vilket är en av de största fördelarna med att använda en samling jämfört med en vanlig array.

Skillnaden mellan ArrayList och List i C#

Både en ArrayList och en generisk Lista lagra en grupp objekt som kan växa vid körning, men de skiljer sig åt i hur de hanterar typer. Att känna till skillnaden hjälper dig att välja rätt för modern C#-kod.

De viktigaste skillnaderna listas nedan:

  • Typ säkerhet: En ArrayList lagrar varje objekt som ett objekt, medan en List är bunden till en deklarerad typ och kontrolleras vid kompileringstid.
  • Prestanda: En ArrayList boxas och avboxas värdetyper som int, vilket kostar tid, medan en List undviker boxning för bättre hastighet.
  • Namnrymd: ArrayList finns i System.Collections, medan List finns i System.Collections.Generic.
  • gjutning: Att läsa från en ArrayList kräver ofta en återgång till den ursprungliga typen, men en List returnerar rätt typ direkt.
  • Rekommendation: Microsoft rekommenderar List för nyutveckling eftersom den är säkrare, snabbare och lättare att läsa.

Kort sagt, en ArrayList är användbar för att förstå äldre kod eller blandad lagring, medan en List är det föredragna valet för de flesta applikationer idag.

Vanliga frågor

En array har en fast storlek och lagrar en datatypuppsättning vid deklaration. En ArrayList växer och krymper vid körning och lagrar varje element som ett objekt, så den kan innehålla blandade datatyper i en enda lista.

ArrayList tas inte bort, men Microsoft rekommenderar det inte för nyutveckling. Den generiska List-klassen i System.Collections.Generic är att föredra eftersom den ger typsäkerhet och bättre prestanda, så den mesta moderna C#-koden använder List istället.

Eftersom en ArrayList lagrar objekt som objekt, kommer en värdetyp som int att lägga till den i ett objekt, vilket skapas som en box. Att läsa tillbaka den och omvandla till den ursprungliga typen är att avboxa. Båda stegen kostar prestanda, vilket List undviker.

En ArrayList stöder flera läsare samtidigt, men instansmedlemmar garanteras inte vara trådsäkra när samlingen ändras. För säkra flertrådade skrivningar, omslut den med ArrayList.Synchroniserad metod eller använd en samtidig insamling istället.

Antal är antalet element som för närvarande lagras i ArrayList. Kapacitet är det totala antalet element som den kan innehålla innan den ändrar storlek. Kapacitet är alltid lika med eller större än Antal och växer automatiskt när du lägger till objekt.

Du kan kopiera objekten till en starkt typad lista med metoderna Cast och ToList, eller anropa ToArray-metoden för att få en objektmatris. Konvertering till en generisk lista är vanligt eftersom det återställer typsäkerheten.

Ja. GitHub Copilot kan skriva ArrayList-deklarationer, lägga till och ta bort anrop och loopar från en kort kommentar eller ett metodnamn. Den föreslår ofta också den generiska List-versionen, eftersom det är den rekommenderade samlingen för ny C#-kod.

ML.NET läser vanligtvis träningsdata genom generiska samlingar som List och IEnumerable, vilka mappas till dess IDataView-pipeline. En icke-generisk ArrayList används sällan direkt eftersom en starkt typad samling håller maskininlärningsdata tydlig och typsäker.

Sammanfatta detta inlägg med: