C# Academy · Oppitunti

Range-tyyppi ja ..-operaattori

Ottakaa osia range-lausekkeilla.

Oppitunti 2/413 vaihetta

Range-tyyppi ja ..-operaattori on ilmainen C# Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu C# Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C# Academy-kurssilla on yhteensä 4 oppituntia.

Tutustu Range-tyyppiin

System.Range kuvaa sekvenssin osaa käyttämällä alku- ja loppu-Index-arvoa. Se sopii täydellisesti yhteen alueoperaattorin .. kanssa osasekvenssien ilmaisemiseen.

using System;

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

..-operaattori (alue)

Alueoperaattori a..b muodostaa Range-arvon indeksistä a (mukaan lukien) indeksiin b (pois lukien). Siksi 1..3 kattaa sijainnit 1 ja 2.

using System;

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

Alku mukaan lukien, loppu pois lukien

Poissulkeva loppu vastaa for-silmukoiden toimintaa: alkioiden määrä on end - start. Alue 2..5 tuottaa kolme alkiota.

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

Avoimet alueet

Voit jättää kumman tahansa rajan pois. ..3 tarkoittaa "alusta kohtaan 3 asti", ja 2.. tarkoittaa "kohdasta 2 loppuun". Pelkkä .. kopioi koko sekvenssin.

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

Alueet lopusta laskettavilla indekseillä

Yhdistä ..-operaattori ja ^-operaattori viipaloidaksesi sekvenssin lopusta laskettavan sijainnin perusteella. ^2.. tarkoittaa "kahta viimeistä alkiota".

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 tallennettuna arvona

Range on arvo, jolle voit antaa nimen ja jota voit käyttää uudelleen eri kokoelmissa, kunhan pituuden käsittely noudattaa samaa käytäntöä.

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

Kun haluat ratkaista alueen tietyn pituisen kokoelman perusteella, kutsu metodia GetOffsetAndLength(length). Se palauttaa alkusiirtymän ja viipaleen pituuden sekä käsittelee lopusta laskettavat indeksit puolestasi.

using System;

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

Range.All

Staattinen Range.All vastaa ilmaisua .. ja valitsee koko sekvenssin. Se on kätevä, kun alueita välitetään argumentteina.

using System;

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

Rangen luominen eksplisiittisesti

Operaattorin lisäksi voit selvyyden vuoksi kutsua konstruktoria tai tehdasmetodeja Range.StartAt ja Range.EndAt.

using System;

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

Tyhjät ja virheelliset alueet

Alue, jonka alku ja loppu ovat samat, tuottaa tyhjän viipaleen. Alue, jonka alku on ratkaisemisen jälkeen loppua suurempi, aiheuttaa poikkeuksen viipalointivaiheessa.

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"); }

Kootaan kaikki yhteen

Alueet tekevät tekstin ja taulukoiden käsittelystä tiivistä. Tässä poimimme taulukon keskeltä ikkunan ilman indeksien laskemista.

using System;

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

Pikatarkistus

Varmista, että ymmärrät alueoperaattorin semantiikan.

Kertaus

Opit, että System.Range kuvaa viipaletta ..-operaattorilla.

  • Alku otetaan mukaan ja loppu jätetään pois: määrä = loppu - alku.
  • Rajat ovat valinnaisia: ..3, 2.., ...
  • .. voidaan yhdistää ^-operaattoriin lopusta laskettavaa viipalointia varten.
  • GetOffsetAndLength(length) ratkaisee alueen konkreettisiksi luvuiksi.
Aloita maksutta

Opi C# tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
93
Oppitunnit
346

Usein kysytyt kysymykset

Onko oppitunti ”Range-tyyppi ja ..-operaattori” ilmainen?

Kyllä – oppitunnin ”Range-tyyppi ja ..-operaattori” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko C# Academy-kurssin, päivitä CoddyKit PROhon. C# Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Range-tyyppi ja ..-operaattori”?

Ottakaa osia range-lausekkeilla. Harjoittelet C# Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni C# Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin C# Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Range-tyyppi ja ..-operaattori”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä C# Academy-oppitunnilla?

Kyllä. Jokainen C# Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Index-tyyppi ja ^-operaattori
  2. Range-tyyppi ja ..-operaattori
  3. Ranget taulukoiden ja merkkijonojen kanssa
  4. Ranget tukevat mukautetut tyypit
← Takaisin: C# Academy