C# Academy · leksjon

Range-typen og ..-operatoren

Ta utsnitt med range-uttrykk.

Leksjon 2 av 413 trinn

Range-typen og ..-operatoren er en gratis leksjon i C# Academy på CoddyKit. Dette er leksjon 2 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 Range-typen

System.Range beskriver et utsnitt av en sekvens ved hjelp av en start- og en slutt-Index. Den passer perfekt sammen med områdeoperatoren .. for å uttrykke delsekvenser.

using System;

Range r = 1..3;
Console.WriteLine(r.Start + ".." + r.End); // 1..3

Operatoren .. (område)

Områdeoperatoren a..b oppretter et Range fra indeks a (inkludert) til indeks b (ekskludert). 1..3 omfatter derfor posisjon 1 og 2.

using System;

int[] data = { 10, 20, 30, 40, 50 };
int[] slice = data[1..3];
Console.WriteLine(string.Join(",", slice)); // 20,30

Start inkludert, slutt ekskludert

Den ekskluderte slutten gjenspeiler hvordan for-løkker fungerer: antallet elementer er lik end - start. Området 2..5 gir tre elementer.

using System;

int[] data = { 0, 1, 2, 3, 4, 5, 6 };
int[] slice = data[2..5];
Console.WriteLine(slice.Length);          // 3
Console.WriteLine(string.Join(",", slice)); // 2,3,4

Områder uten én avgrensning

De kan utelate én av grensene. ..3 betyr "fra begynnelsen og fram til 3", mens 2.. betyr "fra 2 til slutten". .. alene kopierer hele sekvensen.

using System;

int[] d = { 10, 20, 30, 40, 50 };
Console.WriteLine(string.Join(",", d[..3])); // 10,20,30
Console.WriteLine(string.Join(",", d[2..])); // 30,40,50
Console.WriteLine(string.Join(",", d[..]));  // 10,20,30,40,50

Områder med indekser fra slutten

Kombiner .. med ^ for å lage et utsnitt relativt til slutten. ^2.. betyr "de to siste elementene".

using System;

int[] d = { 1, 2, 3, 4, 5 };
Console.WriteLine(string.Join(",", d[^2..]));  // 4,5
Console.WriteLine(string.Join(",", d[..^1]));  // 1,2,3,4 (drop last)

Range som lagret verdi

En Range er en verdi De kan navngi og bruke på nytt på tvers av ulike samlinger med samme lengdekonvensjon.

using System;

Range middle = 1..^1; // drop first and last
int[] a = { 0, 1, 2, 3, 4 };
Console.WriteLine(string.Join(",", a[middle])); // 1,2,3

Range.GetOffsetAndLength

For å finne et områdes konkrete plassering ut fra en bestemt lengde kan De kalle GetOffsetAndLength(length). Metoden returnerer startforskyvningen og utsnittets lengde, og håndterer indekser fra slutten for Dem.

using System;

Range r = ^3..^1;
var (offset, length) = r.GetOffsetAndLength(5);
Console.WriteLine(offset + " " + length); // 2 2

Range.All

Den statiske Range.All er det samme som .. og velger hele sekvensen. Den er praktisk når De sender områder som argumenter.

using System;

Range whole = Range.All;
int[] d = { 9, 8, 7 };
Console.WriteLine(string.Join(",", d[whole])); // 9,8,7

Opprette Range eksplisitt

I tillegg til operatoren kan De kalle konstruktøren eller fabrikkmetodene Range.StartAt og Range.EndAt for å gjøre koden tydeligere.

using System;

Range a = new Range(1, 3);
Range b = Range.StartAt(2);
Range c = Range.EndAt(2);
Console.WriteLine(a + " | " + b + " | " + c);

Tomme og ugyldige områder

Et område der start er lik slutt, gir et tomt utsnitt. Et område der starten ligger etter slutten (etter at verdiene er beregnet), utløser et unntak når utsnittet opprettes.

using System;

int[] d = { 1, 2, 3, 4 };
Console.WriteLine(d[2..2].Length); // 0 (empty)
try { var _ = d[3..1]; }
catch (ArgumentOutOfRangeException) { Console.WriteLine("invalid range"); }

Sette det sammen

Områder gjør behandling av tekst og arrayer konsis. Her henter vi et utsnitt midt i en array uten noen indeksberegning.

using System;

int[] readings = { 5, 7, 9, 11, 13, 15 };
int[] window = readings[1..^1];
Console.WriteLine(string.Join(",", window)); // 7,9,11,13

Hurtigsjekk

Kontroller at De forstår semantikken til områdeoperatoren.

Oppsummering

De har lært at System.Range beskriver et utsnitt med operatoren ...

  • Starten er inkludert, slutten er ekskludert: antall = end - start.
  • Grenser er valgfrie: ..3, 2.., ...
  • .. kan kombineres med ^ for utsnitt fra slutten.
  • GetOffsetAndLength(length) konverterer et område til konkrete tall.
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 «Range-typen og ..-operatoren» gratis?

Ja – hele teksten i «Range-typen 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 «Range-typen og ..-operatoren»?

Ta utsnitt med range-uttrykk. 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 2 av 4.

Hvor lang tid tar leksjonen «Range-typen 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