C# Array Tutorial: Opprett, erklær, initialiser

⚡ Smart oppsummering

C#-arrayer lagrer en samling av elementer med fast størrelse som deler samme datatype under ett variabelnavn. Hvert element sitter i en nullbasert indeks, slik at deklarering, initialisering og tilgang til verdier forblir rask og forutsigbar.

  • 📌 Definisjon: En matrise inneholder flere verdier av én type i indekserte posisjoner som nås gjennom én enkelt variabel.
  • ✅ Erklæring: En datatype etterfulgt av hakeparenteser og et navn deklarerer en matrise, for eksempel Int32[]-verdier.
  • 🔢 initialisering: Det nye nøkkelordet angir størrelsen, og hver indeks mottar deretter en verdi som verdier[0]=1.
  • 🔍 Tilgang: Nullbasert indeksering leser eller skriver et hvilket som helst element, så det første elementet er verdier[0] og tellingen starter på 0.
  • 🔁 Iterasjon: En foreach-løkke går gjennom hvert element uten en indeks, noe som unngår feil utenfor rekkevidde på større arrayer.
  • 🤖 AI-hjelp: GitHub Copilot genererer standard arrays, mens ML.NET laster inn numeriske arrays som funksjoner for maskinlæringsmodeller.

C#-arrayer

Hva er en Arrays i C#?

En matrise brukes til å lagre en samling eller serie med elementer. Disse elementene vil være av samme type.

Så hvis du for eksempel hadde en matrise med heltallsverdier, kan matrisen være en samling verdier som [1, 2, 3, 4]. Her er antall elementer i matrisen 4.

Matriser er nyttige når du vil lagre en samling verdier av samme type. Så i stedet for å erklære en variabel for hvert element kan du bare deklarere én variabel.

Denne variabelen vil peke til en matrise eller en liste over elementer, som vil være ansvarlig for å lagre elementene i matrisen.

La oss se på hvordan vi kan jobbe med arrays i C#. I vårt eksempel vil vi deklarere en rekke heltall og jobbe med dem deretter.

Merk at all koden nedenfor blir laget til Program.cs-filen.

Trinn 1) Deklarere en matrise – Det første trinnet er å deklarere en matrise. La oss se hvordan vi kan oppnå dette ved hjelp av kodeeksemplet nedenfor.

Matriser i C#

Code Forklaring:-

  1. Den første delen er data-type. Den spesifiserer typen elementer som brukes i matrisen. Så i vårt tilfelle lager vi en rekke heltall.
  2. Den andre delen [ ], som spesifiserer rangeringen av matrisen. (Rangen er en plassholder som spesifiserer antall elementer matrisen vil inneholde)
  3. Neste er navnet på matrisen som i vårt tilfelle er "verdier". Legg merke til at du ser en grønn krøllete understreking, ikke bekymre deg for det. Det er bare .Net som sier at du har deklarert en array, men ikke bruker den noe sted.

Trinn 2) Det neste trinnet er å initialisere matrisen. Her skal vi spesifisere antall verdier matrisen vil inneholde. Vi skal også tilordne verdier til hvert element i matrisen.

Matriser i C#

Code Forklaring:-

  1. Først setter vi antall elementer matrisen skal inneholde til 3. Så i hakeparentesene sier vi at matrisen vil inneholde 3 elementer.
  2. Så tilordner vi verdier til hvert element i arrayet. Vi kan gjøre dette ved å spesifisere variabelnavnet + indeksposisjonen i arrayet. Så values[0] betyr at vi lagrer en verdi i den første posisjonen i arrayet. På samme måte, for å få tilgang til den andre posisjonen, bruker vi notasjonen values[1] og så videre.

Merknader: – I Arrays starter indeksposisjonen fra 0.

Trinn 3) La oss nå vise de individuelle elementene i matrisen i konsollen. La oss legge til koden nedenfor for å oppnå dette.

Matriser i C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code Forklaring:-

Dette er den enkle delen der vi bare bruker Console.WriteLine-metoden for å sende hver verdi av elementet til konsollen.

Merk at igjen, vi får tilgang til hvert element ved hjelp av array-variabelnavnet sammen med indeksposisjonen.

Hvis koden ovenfor angis riktig og programmet kjøres, vil følgende utgang vises.

Utgang:

Matriser i C#

Fra utgangen kan du se alle verdiene til matrisen som vises i konsollen.

Slik går du gjennom en C#-matrise med foreach

Det fungerer å lese hvert element etter indeksen, men det blir kjedelig når en matrise inneholder mange verdier. Foreach-løkken tilbyr en renere måte å besøke hvert element i en matrise i rekkefølge uten trackonstruer en indeksvariabel selv.

foreach-setningen tar hvert element fra arrayet ett om gangen og kopierer det inn i en løkkevariabel. Deretter bruker du variabelen inne i løkkekroppen. Fordi løkken stopper automatisk ved det siste elementet, fjerner foreach risikoen for å lese forbi slutten av arrayet.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Eksemplet ovenfor deklarerer og initialiserer en matrise med tre heltall, og går deretter gjennom den med foreach. Ved hver omgang brukes variabelen elementet mottar den neste verdien, og Console.WriteLine skriver den ut. Utdataene er tallene 1, 2 og 3 på separate linjer.

Viktige punkter å huske på om foreach med arrayer:

  • Løkkevariabelen er skrivebeskyttet, så foreach er best for å lese verdier i stedet for å endre dem på plass.
  • For å endre elementer mens du ser påping, bruk i stedet en for-løkke med en indeks.
  • foreach fungerer med endimensjonale arrays, flerdimensjonale arrays og enhver samling som støtter iterasjon.

C# flerdimensjonale arrayer

Arrayene som er vist så langt er endimensjonale, som betyr at de lagrer en enkel liste med verdier. C# støtter også flerdimensjonale arrayer, som arrangerer elementer i et rutenett av rader og kolonner. En todimensjonal array er den vanligste formen og passer til data som matriser, spillbrett og tabeller.

Du deklarerer en todimensjonal matrise ved å sette et komma i hakeparentesene. Hvert ekstra komma legger til en annen dimensjon, så int[,] er todimensjonal og int[,,] er tredimensjonal. Elementer nås deretter med én indeks per dimensjon.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

Her inneholder arraymatrisen to rader og to kolonner. Elementet matrix[0, 0] returnerer 1, og matrix[1, 1] returnerer 4. Antall dimensjoner er fast når arrayet deklareres, mens størrelsen på hver dimensjon er satt når arrayet opprettes.

C# Taggete arrayer

En taggete matrise er en matrise der elementene i seg selv er matriser. I motsetning til en rektangulær flerdimensjonal matrise kan hver indre matrise ha ulik lengde, og det er derfor en tagget matrise ofte kalles en matrise av matriser. Denne fleksibiliteten hjelper når rader naturlig inneholder forskjellige antall verdier.

Du deklarerer en taggete array med to sett med hakeparenteser, og oppretter deretter hver indre array separat. Følgende eksempel bygger en taggete array der den første raden inneholder tre verdier og den andre raden inneholder to.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

Uttrykket jagged[0][2] leser det tredje elementet i den første raden, som er 3, og jagged[1][1] leser det andre elementet i den andre raden, som er 5. Fordi hver rad er en separat matrise, bruker jagged-matriser minne effektivt når radlengdene varierer, selv om de trenger et ekstra trinn for å initialisere hver indre matrise.

Spørsmål og svar

Length-egenskapen returnerer det totale antallet elementer i en C#-matrise. For eksempel gir values.Length 3 for en matrise med tre elementer. For flerdimensjonale matriser returnerer GetLength(dimensjon) størrelsen på hver spesifikke dimensjon.

AC#-arrayer har en fast størrelse ved opprettelse, mens en liste vokser og krymper dynamisk. Arrayer er raskere for faste data og bruker mindre overhead, mens en liste passer til samlinger der elementantallet endres under kjøretid.

En standard C#-matrise lagrer elementer av én deklarert type, så det er ikke tillatt å blande typer. For å holde forskjellige typer, deklarer en object[]-matrise eller bruk en samling som ArrayList, men begge deler ofrer typesikkerheten under kompilering.

Den statiske Array.Sort-metoden arrangerer elementene i en C#-matrise i stigende rekkefølge. Send matrisen til Array.Sort(values), og bruk Array.Reverse etterpå for synkende rekkefølge. Sortering fungerer på tall, strenger og andre sammenlignbare typer.

Array.Copy dupliserer et elementområde fra én array til en annen, mens Clone-metoden lager en overfladisk kopi av hele arrayet. Å tilordne én arrayvariabel til en annen kopierer bare referansen, ikke de underliggende elementene.

En IndexOutOfRangeException oppstår når kode åpner en arrayposisjon som ikke finnes, for eksempel verdier[5] i en array med tre elementer. Fordi C#-arrayer er nullbaserte, kjører gyldige indekser fra 0 til Length minus én. Valider alltid en indeks først.

Ja. GitHub Copilot foreslår arraydeklarasjoner, initialisering og løkkelogikk fra en kommentar eller et metodenavn i Visual Studio og VS Code. RevSe hvert forslag for riktig størrelse og indeksgrenser, siden Copilot kan introdusere feil som avviker fra én og er utenfor rekkevidde.

ML.NET representerer funksjonsvektorer og modellinndata som C#-arrayer, vanligvis float[]-arrayer. Treningsdata lastes inn i arrayer eller spans, og prediksjoner returnerer arrayer med poengsummer. Den faste størrelsen og den raske indekseringen av arrayer gjør dem effektive for maskinlæringspipelines.

Oppsummer dette innlegget med: