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

⚡ Smart opsummering

C# arrays gemmer en samling af elementer med fast størrelse, der deler den samme datatype, under ét variabelnavn. Hvert element sidder på et nulbaseret indeks, så deklarering, initialisering og adgang til værdier forbliver hurtig og forudsigelig.

  • 📌 Definition: Et array indeholder flere værdier af én type i indekserede positioner, der nås via en enkelt variabel.
  • Erklæring: En datatype efterfulgt af firkantede parenteser og et navn deklarerer et array, for eksempel Int32[] værdier.
  • 🔢 Initialisering: Det nye nøgleord angiver størrelsen, hvorefter hvert indeks modtager en værdi som f.eks. værdier[0]=1.
  • 🔍 Adgang: Nulbaseret indeksering læser eller skriver ethvert element, så det første element er værdier[0], og optællingen starter ved 0.
  • 🔁 Gentagelse: En foreach-løkke gennemgår hvert element uden et indeks, hvilket undgår fejl uden for rækkevidde på større arrays.
  • 🤖 AI assistance: GitHub Copilot genererer standard arrays, mens ML.NET indlæser numeriske arrays som funktioner til maskinlæringsmodeller.

C#-arrays

Hvad er en Arrays i C#?

Et array bruges til at gemme en samling eller serie af elementer. Disse elementer vil være af samme type.

Så hvis du for eksempel havde en matrix af heltalværdier, kunne matrixen være en samling af værdier såsom [1, 2, 3, 4]. Her er antallet af elementer i arrayet 4.

Arrays er nyttige, når du vil gemme en samling af værdier af samme type. Så i stedet for at erklære en variabel for hvert element kan du blot erklære en variabel.

Denne variabel vil pege på et array eller en liste af elementer, som vil være ansvarlig for at gemme elementerne i arrayet.

Lad os se på, hvordan vi kan arbejde med arrays i C#. I vores eksempel vil vi erklære en række heltal og arbejde med dem i overensstemmelse hermed.

Bemærk, at al nedenstående kode bliver lavet til filen Program.cs.

Trin 1) Erklæring af et array – Det første trin er at erklære et array. Lad os se, hvordan vi kan opnå dette ved hjælp af nedenstående kodeeksempel.

Arrays i C#

Code Forklaring:-

  1. Den første del er datatype. Det specificerer typen af ​​elementer, der bruges i arrayet. Så i vores tilfælde opretter vi en række heltal.
  2. Den anden del [ ], som specificerer rækken af ​​arrayet. (Rangen er en pladsholder, som angiver antallet af elementer, som arrayet vil indeholde)
  3. Dernæst er navnet på arrayet, som i vores tilfælde er 'værdier'. Bemærk, at du ser en grøn snoet understregning, det skal du ikke bekymre dig om. Det er bare .Net, der siger, at du har erklæret et array, men ikke bruger det nogen steder.

Trin 2) Det næste trin er at initialisere arrayet. Her skal vi specificere antallet af værdier arrayet vil indeholde. Vi vil også tildele værdier til hvert element i arrayet.

Arrays i C#

Code Forklaring:-

  1. Først indstiller vi antallet af elementer, som arrayet skal indeholde, til 3. Så i firkantede parenteser siger vi, at arrayet vil indeholde 3 elementer.
  2. Derefter tildeler vi værdier til hvert element i arrayet. Vi kan gøre dette ved at angive variabelnavnet + indekspositionen i arrayet. Så værdier[0] betyder, at vi gemmer en værdi i den første position i arrayet. På samme måde bruger vi notationen værdier[1] for at få adgang til den anden position og så videre.

Bemærk: – I Arrays starter indekspositionen fra 0.

Trin 3) Lad os nu vise de individuelle elementer i arrayet i konsollen. Lad os tilføje nedenstående kode for at opnå dette.

Arrays 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 del, hvor vi bare bruger Console.WriteLine metoden til at sende hver værdi af elementet til konsollen.

Bemærk, at vi igen får adgang til hvert element ved hjælp af array-variabelnavnet sammen med indekspositionen.

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

Output:

Arrays i C#

Fra outputtet kan du se alle værdierne for arrayet, der vises i konsollen.

Sådan looper du gennem et C# array ved hjælp af foreach

Det virker at læse hvert element ud fra dets indeks, men det bliver kedeligt, når et array indeholder mange værdier. Foreach-løkken tilbyder en renere måde at besøge hvert element i et array i rækkefølge uden tracoprette en indeksvariabel selv.

foreach-sætningen tager hvert element fra arrayet et ad gangen og kopierer det til en loopvariabel. Du bruger derefter den variabel inde i loop-kroppen. Fordi løkken stopper automatisk ved det sidste element, fjerner foreach risikoen for at læse forbi slutningen af ​​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 et array af tre heltal og gennemgår det derefter med foreach. Ved hver gennemgang anvendes variablen post modtager den næste værdi, og Console.WriteLine udskriver den. Outputtet er tallene 1, 2 og 3 på separate linjer.

Vigtige punkter at huske om foreach med arrays:

  • Løkkevariablen er skrivebeskyttet, så foreach er bedst til at læse værdier i stedet for at ændre dem på stedet.
  • Sådan ændrer du elementer under looping, brug i stedet en for-løkke med et indeks.
  • foreach fungerer med endimensionelle arrays, flerdimensionelle arrays og enhver samling, der understøtter iteration.

C# flerdimensionelle arrays

De viste arrays indtil videre er endimensionelle, hvilket betyder, at de gemmer en simpel liste over værdier. C# understøtter også flerdimensionelle arrays, som arrangerer elementer i et gitter af rækker og kolonner. Et todimensionelt array er den mest almindelige form og passer til data såsom matricer, spilleplader og tabeller.

Du deklarerer et todimensionelt array ved at placere et komma i de firkantede parenteser. Hvert ekstra komma tilføjer en anden dimension, så int[,] er todimensionel og int[,,] er tredimensionel. Elementer nås derefter med ét indeks pr. dimension.

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 indeholder arraymatricen to rækker og to kolonner. Elementet matrix[0, 0] returnerer 1, og matrix[1, 1] returnerer 4. Antallet af dimensioner er fast, når arrayet deklareres, mens størrelsen af ​​hver dimension er angivet, når arrayet oprettes.

C# Takkede Arrays

Et takket array er et array, hvis elementer selv er arrays. I modsætning til et rektangulært flerdimensionelt array kan hvert indre array have en forskellig længde, hvilket er grunden til, at et takket array ofte kaldes et array af arrays. Denne fleksibilitet hjælper, når rækker naturligt indeholder forskellige antal værdier.

Du deklarerer et takket array med to sæt firkantede parenteser og opretter derefter hvert indre array separat. Følgende eksempel bygger et takket array, hvor den første række indeholder tre værdier, og den anden række indeholder 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();
  }
 }
}

Udtrykket jagged[0][2] læser det tredje element i den første række, som er 3, og jagged[1][1] læser det andet element i den anden række, som er 5. Fordi hver række er et separat array, bruger jagged arrays hukommelsen effektivt, når rækkelængderne varierer, selvom de har brug for et ekstra trin for at initialisere hvert indre array.

Ofte Stillede Spørgsmål

Egenskaben Length returnerer det samlede antal elementer i et C#-array. For eksempel giver values.Length 3 for et array med tre elementer. For flerdimensionelle arrays returnerer GetLength(dimension) størrelsen af ​​hver specifik dimension.

AC#-array har en fast størrelse ved oprettelse, mens en List vokser og krymper dynamisk. Arrays er hurtigere til faste data og bruger mindre overhead, hvorimod en List passer til samlinger, hvis elementantal ændres under kørsel.

Et standard C#-array gemmer elementer af en enkelt deklareret type, så det er ikke tilladt at blande typer. For at indeholde forskellige typer skal du deklarere et object[]-array eller bruge en samling som ArrayList, selvom begge dele går på kompileringstidspunktet med ofre for typesikkerhed.

Den statiske Array.Sort-metode arrangerer elementerne i et C#-array i stigende rækkefølge efter behov. Send arrayet til Array.Sort(values), og brug Array.Reverse bagefter for faldende rækkefølge. Sortering fungerer på tal, strenge og andre sammenlignelige typer.

Array.Copy duplikerer et elementinterval fra ét array til et andet, mens Clone-metoden opretter en overfladisk kopi af hele arrayet. Tildeling af én arrayvariabel til en anden kopierer kun referencen, ikke de underliggende elementer.

En IndexOutOfRangeException opstår, når kode tilgår en arrayposition, der ikke findes, såsom værdier[5] i et array med tre elementer. Da C#-arrays er nulbaserede, kører gyldige indeks fra 0 til længde minus én. Valider altid et indeks først.

Ja. GitHub Copilot foreslår array-deklarationer, initialisering og loop-logik fra en kommentar eller et metodenavn i Visual Studio og VS Code. RevSe hvert forslag til korrekt størrelse og indeksgrænser, da Copilot kan introducere fejl, der er forkerte for en, og fejl, der ligger uden for området.

ML.NET repræsenterer funktionsvektorer og modelinput som C#-arrays, typisk float[]-arrays. Træningsdata indlæses i arrays eller spans, og forudsigelser returnerer arrays af scores. Den faste størrelse og hurtige indeksering af arrays gør dem effektive til maskinlæringspipelines.

Opsummer dette indlæg med: