C# Academy · Lektion

Typen Index og operatoren ^

Referér til elementer fra slutningen af en collection.

Lektion 1 af 413 trin

Typen Index og operatoren ^ er en gratis C# Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C# Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C# Academy-kurset indeholder 4 lektioner i alt.

Mød typen Index

C# giver dig typen System.Index til at beskrive en position i en sekvens. I modsætning til en almindelig int kan en Index repræsentere en position, der tælles fra slutningen af en samling, ikke kun fra begyndelsen.

Det gør kode som "giv mig det sidste element" både tydelig og sikker.

using System;

int[] numbers = { 10, 20, 30, 40, 50 };
Index first = 0;
Console.WriteLine(numbers[first]); // 10

Operatoren ^ (fra slutningen)

Hat-operatoren ^ opretter et Index, der tæller fra slutningen. ^1 betyder det sidste element, ^2 det næstsidste og så videre.

Bemærk, at ^1 er det sidste gyldige indeks, mens ^0 er lig med Length og ligger én position efter slutningen.

using System;

int[] numbers = { 10, 20, 30, 40, 50 };
Console.WriteLine(numbers[^1]); // 50 (last)
Console.WriteLine(numbers[^2]); // 40

Index som førsteklasses værdi

En Index er en rigtig værdi, som du kan gemme i en variabel, sende til metoder og genbruge. Det adskiller positionen fra samlingen.

using System;

int[] data = { 1, 2, 3, 4, 5 };
Index last = ^1;
Index secondLast = ^2;
Console.WriteLine(data[last]);       // 5
Console.WriteLine(data[secondLast]); // 4

IsFromEnd og Value

Alle Index-værdier har to egenskaber: Value (heltalsforskydningen) og IsFromEnd (om værdien blev oprettet med ^).

using System;

Index fromStart = 2;
Index fromEnd = ^2;
Console.WriteLine(fromStart.Value + " " + fromStart.IsFromEnd); // 2 False
Console.WriteLine(fromEnd.Value + " " + fromEnd.IsFromEnd);     // 2 True

GetOffset finder positionen

Et indeks fra slutningen giver først mening, når du kender samlingens længde. Index.GetOffset(length) omdanner det til en konkret, nulbaseret forskydning.

using System;

Index fromEnd = ^1;
int length = 5;
int offset = fromEnd.GetOffset(length);
Console.WriteLine(offset); // 4

^0 ligger én position efter slutningen

Da ^0 bliver til Length, udløser indeksering med det en undtagelse. Det er kun nyttigt som den eksklusive øvre grænse for et interval, som du ser i næste lektion.

using System;

int[] data = { 1, 2, 3 };
try {
    Console.WriteLine(data[^0]); // out of range!
} catch (IndexOutOfRangeException) {
    Console.WriteLine("^0 is past the end");
}

Index fungerer med mange samlinger

Alle typer med en indeksering samt en egenskab med navnet Length eller Count (og den nødvendige understøttelse) kan bruge Index. Arrays, string og Span<T> fungerer uden yderligere opsætning.

using System;

string word = "Coddy";
Console.WriteLine(word[^1]); // y
Console.WriteLine(word[^5]); // C

Beregning af indekser dynamisk

Du kan oprette et Index ud fra et heltal fra kørselstidspunktet ved at bruge operatoren ^ på en variabel.

using System;

int[] data = { 5, 10, 15, 20 };
int n = 2;
Index idx = ^n;            // ^ works on variables too
Console.WriteLine(data[idx]); // 15

Index kontra almindelig int

En almindelig int tæller altid fra begyndelsen. Index tilføjer muligheden for at tælle fra slutningen, samtidig med at der stadig sker en implicit konvertering fra int, så eksisterende kode fortsat fungerer.

using System;

Index a = 1;   // implicit from int
Index b = ^1;  // from end
Console.WriteLine(a.IsFromEnd); // False
Console.WriteLine(b.IsFromEnd); // True

Undgå fejl med én position

Det sidste element blev tidligere hentet med arr[arr.Length - 1]. Med ^1 er hensigten tydelig, og der er ingen beregning, der kan gå galt.

using System;

int[] scores = { 88, 92, 79, 95 };
Console.WriteLine(scores[scores.Length - 1]); // old way: 95
Console.WriteLine(scores[^1]);                // new way: 95

Index i rigtig kode

Her er en lille hjælpefunktion, der returnerer det sidste element i et vilkårligt array ved hjælp af ^1, så kaldestedet forbliver enkelt.

using System;

static T Last<T>(T[] items) => items[^1];

int[] nums = { 3, 6, 9, 12 };
Console.WriteLine(Last(nums)); // 12

Hurtig test

Test din forståelse af typen Index og operatoren ^.

Opsummering

Du har lært, at System.Index repræsenterer en position, der kan tælles fra begyndelsen eller, med operatoren ^, fra slutningen.

  • ^1 er det sidste element, mens ^0 er lig med Length (én position efter slutningen).
  • Index har Value, IsFromEnd og GetOffset(length).
  • Det konverteres implicit fra int og fungerer med arrays, strenge og spans.
Gratis at komme i gang

Lær C# med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
93
Lektioner
346

Ofte stillede spørgsmål

Er lektionen “Typen Index og operatoren ^” gratis?

Ja — hele teksten til “Typen Index og operatoren ^” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C# Academy-kurset, skal du opgradere til CoddyKit PRO. C# Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Typen Index og operatoren ^”?

Referér til elementer fra slutningen af en collection. Du øver dig i C# Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C# Academy?

Der kræves ingen tidligere erfaring. C# Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Typen Index og operatoren ^”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C# Academy-lektion?

Ja. Alle C# Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Typen Index og operatoren ^
  2. Typen Range og operatoren ..
  3. Ranges med arrays og strenge
  4. Brugerdefinerede typer med range-understøttelse
← Tilbage til C# Academy