Typen Index og operatoren ^
Referér til elementer fra slutningen af en collection.
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]); // 10Operatoren ^ (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]); // 40Index 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]); // 4IsFromEnd 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 TrueGetOffset 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]); // CBeregning 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]); // 15Index 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); // TrueUndgå 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: 95Index 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)); // 12Hurtig 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.
^1er det sidste element, mens^0er lig medLength(én position efter slutningen).IndexharValue,IsFromEndogGetOffset(length).- Det konverteres implicit fra
intog fungerer med arrays, strenge og spans.
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
- Typen Index og operatoren ^
- Typen Range og operatoren ..
- Ranges med arrays og strenge
- Brugerdefinerede typer med range-understøttelse