Flerdimensionella arrayer
Rutnät och ojämna arrayer.
Flerdimensionella arrayer är en gratis lektion i C# Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C# Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C# Academy innehåller totalt 4 lektioner.
Mer än en enda rad
Hittills har arrayer varit en enda rad med värden. En flerdimensionell array lagrar värden i ett rutnät, ungefär som ett kalkylblad med rader och kolumner.
De passar utmärkt för spelplaner, tabeller och matriser.
Deklarera en 2D-array
En tvådimensionell array använder ett kommatecken inuti hakparenteserna: [,]. Du anger två storlekar: antalet rader och antalet kolumner.
Det här rutnätet har 2 rader och 3 kolumner, så det innehåller 6 värden.
int[,] grid = new int[2, 3];
Console.WriteLine(grid[0, 0]); // 0Komma åt celler
För att läsa eller skriva en cell anger du både radens och kolumnens index, åtskilda av ett kommatecken.
Båda indexen är nollbaserade, precis som i endimensionella arrayer.
int[,] grid = new int[2, 3];
grid[0, 1] = 7;
grid[1, 2] = 9;
Console.WriteLine(grid[1, 2]); // 9Initiera ett rutnät
Du kan fylla en 2D-array när den skapas genom att använda nästlade klamrar. Varje inre grupp motsvarar en rad.
Alla rader måste ha samma antal kolumner.
int[,] grid = { { 1, 2, 3 }, { 4, 5, 6 } };
Console.WriteLine(grid[1, 0]); // 4Metoden GetLength
I två dimensioner anger Length det totala antalet celler. Använd GetLength för att få storleken på en enskild dimension.
GetLength(0) är antalet rader och GetLength(1) är antalet kolumner.
int[,] grid = { { 1, 2, 3 }, { 4, 5, 6 } };
Console.WriteLine(grid.Length); // 6
Console.WriteLine(grid.GetLength(0)); // 2
Console.WriteLine(grid.GetLength(1)); // 3Loopa över ett rutnät
Om du vill besöka varje cell använder du en loop för rader inuti en annan loop för kolumner. Den yttre loopen väljer en rad och den inre loopen går igenom dess kolumner.
Använd GetLength så att looparna stämmer överens med den faktiska storleken.
int[,] grid = { { 1, 2 }, { 3, 4 } };
for (int r = 0; r < grid.GetLength(0); r++)
{
for (int c = 0; c < grid.GetLength(1); c++)
{
Console.WriteLine(grid[r, c]);
}
}Ett komplett rutnätsprogram
Det här kompletta programmet bygger ett litet rutnät och skriver sedan ut varje värde tillsammans med dess rad och kolumn.
Kör det för att se alla fyra celler uppräknade.
int[,] grid = { { 10, 20 }, { 30, 40 } };
for (int r = 0; r < grid.GetLength(0); r++)
{
for (int c = 0; c < grid.GetLength(1); c++)
{
Console.WriteLine("[" + r + "," + c + "] = " + grid[r, c]);
}
}Tre dimensioner
Du kan lägga till fler dimensioner genom att använda fler kommatecken. En 3D-array använder [,,] och tre storlekar.
Tänk på den som en stapel av rutnät. De är mindre vanliga men följer samma regler.
int[,,] cube = new int[2, 2, 2];
cube[1, 1, 1] = 5;
Console.WriteLine(cube[1, 1, 1]); // 5Jagged-arrayer
En jagged array är en array av arrayer och skrivs [][]. Till skillnad från ett rektangulärt rutnät kan varje rad ha olika längd.
Du kommer åt den med två separata par hakparenteser.
int[][] jagged = new int[2][];
jagged[0] = new int[] { 1, 2 };
jagged[1] = new int[] { 3, 4, 5 };
Console.WriteLine(jagged[1][2]); // 5Rektangulära och jagged-arrayer
En rektangulär [,]-array har alltid rader med samma längd och lagrar data kompakt. En jagged [][]-array tillåter rader med olika längd.
Välj en rektangulär array för riktiga tabeller och en jagged array när radernas storlek naturligt varierar.
int[][] rows = { new[] { 1 }, new[] { 2, 3, 4 } };
Console.WriteLine(rows[0].Length); // 1
Console.WriteLine(rows[1].Length); // 3Summera ett rutnät
Du kan summera alla värden i ett rutnät genom att addera varje cell inuti nästlade loopar.
Det här mönstret fungerar oavsett antalet rader och kolumner.
int[,] grid = { { 1, 2 }, { 3, 4 } };
int total = 0;
foreach (int v in grid)
{
total += v;
}
Console.WriteLine(total); // 10Snabbtest
Testa dina kunskaper om flerdimensionella arrayer.
Sammanfattning
Du har lärt dig att bygga rutnät med [,], komma åt celler med rad- och kolumnindex och mäta dem med GetLength.
Nästlade loopar besöker varje cell, fler kommatecken lägger till dimensioner och jagged [][]-arrayer tillåter rader med olika längd. Nu kan du lagra och bearbeta datatabeller i C#.
Lär dig C# med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 93
- Lektioner
- 346
Vanliga frågor
Är lektionen ”Flerdimensionella arrayer” gratis?
Ja – hela texten till ”Flerdimensionella arrayer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C# Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C# Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Flerdimensionella arrayer”?
Rutnät och ojämna arrayer. Ni övar på C# Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig C# Academy?
Du behöver inga förkunskaper. Utbildningen i C# Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Flerdimensionella arrayer”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här C# Academy-lektionen?
Ja. Varje C# Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Deklarera arrayer
- Indexering och längd
- Iterera över arrayer
- Flerdimensionella arrayer