C# Academy · leksjon

Indekstypen og ^-operatoren

Referer til elementer fra slutten av en samling.

Leksjon 1 av 413 trinn

Indekstypen og ^-operatoren er en gratis leksjon i C# Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i C# Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i C# Academy inneholder totalt 4 leksjoner.

Bli kjent med Index-typen

C# gir Dem en dedikert System.Index-type for å beskrive en posisjon i en sekvens. I motsetning til en vanlig int kan en Index representere en posisjon telt fra slutten av en samling, ikke bare fra begynnelsen.

Dette gjør kode som "gi meg det siste elementet" uttrykksfull og trygg.

using System;

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

Operatoren ^ (fra slutten)

Hattoperatoren ^ oppretter en Index som teller fra slutten. ^1 betyr det siste elementet, ^2 det nest siste, og så videre.

Merk at ^1 er den siste gyldige indeksen, mens ^0 er lik Length og ligger rett etter slutten.

using System;

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

Index som førsteklasses verdi

En Index er en faktisk verdi som De kan lagre i en variabel, sende til metoder og bruke på nytt. Dette skiller posisjonen 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

Hver Index har to egenskaper: Value (heltallsforskyvningen) og IsFromEnd (om den ble opprettet 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 finner posisjonen

En indeks fra slutten er først meningsfull når De kjenner lengden på samlingen. Index.GetOffset(length) konverterer den til en konkret, nullbasert forskyvning.

using System;

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

^0 ligger rett etter slutten

Fordi ^0 blir til Length, utløser indeksering med den et unntak. Den er bare nyttig som den eksklusive øvre grensen for et område, noe De får se i neste leksjon.

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 på mange samlinger

Alle typer med en indekserer samt en egenskap som heter Length eller Count (og riktig støtte) kan bruke Index. Arrayer, string og Span<T> fungerer uten ekstra oppsett.

using System;

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

Beregne indekser dynamisk

De kan opprette en Index fra et heltall som bestemmes under kjøring, ved å bruke 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 sammenlignet med vanlig int

En vanlig int teller alltid fra begynnelsen. Index legger til muligheten for å telle fra slutten, samtidig som den konverteres implisitt fra int, slik at eksisterende kode fortsatt fungerer.

using System;

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

Unngå feil med én forskyvning

For å hente det siste elementet måtte De tidligere skrive arr[arr.Length - 1]. Med ^1 er hensikten tydelig, og det er ingen aritmetikk som kan bli feil.

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 virkelig kode

Her er en liten hjelpefunksjon som returnerer det siste elementet i en vilkårlig array ved hjelp av ^1, slik at kallstedet forblir ryddig.

using System;

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

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

Hurtigsjekk

Test forståelsen Deres av Index-typen og operatoren ^.

Oppsummering

De har lært at System.Index representerer en posisjon som kan telles fra begynnelsen eller, med operatoren ^, fra slutten.

  • ^1 er det siste elementet; ^0 er lik Length (rett etter slutten).
  • Index har Value, IsFromEnd og GetOffset(length).
  • Den konverteres implisitt fra int og fungerer på arrayer, strenger og spaner.
Gratis å komme i gang

Lær deg C# med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
93
Leksjoner
346

Ofte stilte spørsmål

Er leksjonen «Indekstypen og ^-operatoren» gratis?

Ja – hele teksten i «Indekstypen og ^-operatoren» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av C# Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i C# Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Indekstypen og ^-operatoren»?

Referer til elementer fra slutten av en samling. Du øver på C# Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med C# Academy?

Ingen tidligere erfaring er nødvendig. C# Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Indekstypen og ^-operatoren»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne C# Academy-leksjonen?

Ja. Alle C# Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Indekstypen og ^-operatoren
  2. Range-typen og ..-operatoren
  3. Ranges med matriser og strenger
  4. Egendefinerte typer med støtte for ranges
← Tilbake til C# Academy