Kokoelmien kohdetyypitys
Antakaa kohdetyypin ohjata kokoelman luontia.
Kokoelmien kohdetyypitys on ilmainen C# Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/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.
Mitä kohdetyypitys tarkoittaa
Kohdetyitys tarkoittaa, että kääntäjä päättelee kokoelmalausekkeen muodostaman tyypin käyttöyhteydestä sen sijaan, että oikealla puolella ilmoitettaisiin tyyppi erikseen.
using System;
int[] numbers = [1, 2, 3]; // target type is int[]
Console.WriteLine(numbers.GetType().Name); // Int32[]Kohde määrittää tyypin
Sama literaali muuttuu eri konkreettiseksi tyypiksi sen mukaan, mihin muuttujaan, parametriin tai palautustyyppiin se välitetään.
using System;
using System.Collections.Generic;
int[] asArray = [1, 2, 3];
List<int> asList = [1, 2, 3];
Console.WriteLine(asArray is int[]); // True
Console.WriteLine(asList is List<int>); // TrueKohdetyypitys metodikutsuissa
Kun metodin parametri on kokoelmatyyppi, argumenttiliteraali saa kyseisen parametrin kohdetyypin.
using System;
using System.Collections.Generic;
static void Show(List<int> items) =>
Console.WriteLine(string.Join(",", items));
Show([10, 20, 30]); // target-typed to List<int>Kohdetyypitys palautuksissa
Metodin runko voi palauttaa paljaan kokoelmalausekkeen, jolloin ilmoitettu palautustyyppi antaa sille kohdetyypin.
using System;
using System.Collections.Generic;
static List<string> Tags() => ["csharp", "dotnet", "ranges"];
Console.WriteLine(Tags().Count); // 3Alkiotyypin päättely
Alkiotyyppi tulee kohteesta. Jos kohde on double[], kokonaislukuliteraalit muunnetaan automaattisesti laajentamalla tyypiksi double.
using System;
double[] values = [1, 2, 3]; // ints widen to double
Console.WriteLine(values[0] + 0.5); // 1.5Rajapinnat kohteina
Kokoelmalausekkeiden kohdetyyppinä voi olla esimerkiksi IEnumerable<T>, IReadOnlyList<T> tai ICollection<T>. Kääntäjä valitsee sopivan konkreettisen tyypin.
using System;
using System.Collections.Generic;
IReadOnlyList<int> ro = [1, 2, 3];
Console.WriteLine(ro.Count); // 3Ternäärioperaattori ja kohdetyypitys
Ehdollisen lausekkeen molemmat haarat voivat olla kokoelmalausekkeita, joista kumpikin saa yhteisen tulostyypin kohdetyypityksen avulla.
using System;
bool useDefaults = false;
int[] config = useDefaults ? [0, 0, 0] : [1, 2, 3];
Console.WriteLine(string.Join(",", config)); // 1,2,3var ei ole kohde
Et voi kirjoittaa var x = [1, 2, 3];, koska var ei anna kohdetyyppiä. Ilmoita tyyppi erikseen tai käytä lauseketta kohdassa, jossa tyyppi on tiedossa.
using System;
// var x = [1, 2, 3]; // compile error: no target type
int[] x = [1, 2, 3]; // ok
Console.WriteLine(x.Length); // 3Kohdetyypitys levityselementtien kanssa
Kohdetyypitys ja levityselementit toimivat yhdessä: kohde määrittää lopullisen kokoelmatyypin, kun taas levityselementit tuottavat sisällön.
using System;
using System.Collections.Generic;
int[] src = [1, 2, 3];
List<int> copy = [..src]; // copies into a List<int>
Console.WriteLine(copy is List<int>); // TrueTurhan toiston vähentäminen
Kohdetyypitys poistaa toistuvat tyyppinimet. Vertaa turhan toisteista vanhaa muotoa tiiviiseen uuteen muotoon.
using System;
// old: type repeated
int[] oldWay = new int[] { 1, 2, 3 };
// new: type only on the left
int[] newWay = [1, 2, 3];
Console.WriteLine(oldWay.Length == newWay.Length); // TrueKokonaisuuden yhdistäminen
Tässä yksi apumetodi hyväksyy minkä tahansa vain luku -kokoelman, ja kutsujat voivat välittää sille vapaasti kohdetyypitettyjä literaaleja.
using System;
using System.Collections.Generic;
static int Count(IReadOnlyCollection<int> c) => c.Count;
Console.WriteLine(Count([1, 2, 3, 4])); // 4Pikatarkistus
Testaa, miten hyvin hallitset kohdetyypityksen.
Kertaus
Opit, miten kokoelmalausekkeet saavat kohdetyyppinsä.
- Kohdetyyppi (muuttuja, parametri tai palautustyyppi) ohjaa muodostamista.
- Alkiotyypit voivat laajentua kohdetyypin mukaisiksi.
- Rajapinnat, kuten
IReadOnlyList<T>, ovat kelvollisia kohteita. varei voi toimia kohteena.
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 ”Kokoelmien kohdetyypitys” ilmainen?
Kyllä – oppitunnin ”Kokoelmien kohdetyypitys” 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 ”Kokoelmien kohdetyypitys”?
Antakaa kohdetyypin ohjata kokoelman luontia. 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 3/4.
Kuinka kauan ”Kokoelmien kohdetyypitys”-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
- Kokoelmalausekkeiden syntaksi
- Spread-elementti
- Kokoelmien kohdetyypitys
- Kokoelmien rakentajat