Range-tyyppi ja ..-operaattori
Ottakaa osia range-lausekkeilla.
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,30Alku 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,4Avoimet 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,50Alueet 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,3Range.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 2Range.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,7Rangen 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,13Pikatarkistus
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.
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
- Index-tyyppi ja ^-operaattori
- Range-tyyppi ja ..-operaattori
- Ranget taulukoiden ja merkkijonojen kanssa
- Ranget tukevat mukautetut tyypit