Sužinokite, kaip būsimi pakeitimai pagerins jūsų kodą ir palengvins jūsų kaip kūrėjo gyvenimą.

Nutekėjo labai lauktos C# 12 peržiūros detalės, suteikiančios galimybę pažvelgti į būsimas funkcijas, kurios turėtų pakeisti kalbą. Šios funkcijos yra daug žadančios pagerinti kodo skaitomumą, optimizuoti našumą ir atrakinti pažangias kalbos galimybes.

Patobulintos perjungimo išraiškos

Pristatytas C# 8 pagrindinės jungiklio išraiškos leidžia glaustai, skaitoma forma išreikšti sudėtingą sąlyginę logiką. C# 12 tai daro toliau, įvesdama naują šablonų atitikimo sintaksę perjungimo išraiškoms, todėl dar lengviau rašyti išraiškingą ir glaustą kodą.

Apsvarstykite šį kodo fragmentą.

var rezultatas = obj jungiklis
{
tarpt i kada aš > 0 => "Teigiamas",
tarpt i kada aš < 0 => "Neigiamas",
_ => "nulis"
};

Šis kodas naudoja perjungimo išraiškas, kad nustatytų, ar sveikasis skaičius yra teigiamas, neigiamas, arba nulis. C# 12 galite dar labiau supaprastinti šį kodą naudodami naują šablono atitikimo sintaksę:

var rezultatas = obj jungiklis
{
> 0 => "Teigiamas",
< 0 => "Neigiamas",
_ => "nulis"
};
instagram viewer

Ši sintaksė leidžia praleisti kada raktinį žodį ir naudokite reliacinius operatorius tiesiogiai jungiklio išraiškoje.

Pagrindiniai klasių ir konstrukcijų konstruktoriai

Dabar galite kurti pagrindinius konstruktorius bet kuriame klasė arba struct (lengvos klasės alternatyva). Naudodami pirminius konstruktorius, galite įtraukti parametrus į klasės deklaraciją ir naudoti šias reikšmes klasės turinyje.

C# 9 pristatė pirminius konstruktorius kaip įrašų pozicinės sintaksės dalį. C# 12 išplečia juos visoms struktūroms ir klasėms.

Parametrus po tipo pavadinimo galite įrašyti skliausteliuose, kaip parodyta toliau:

viešas klasė Studentas(tarpt ID, styga vardas, IEnumerable<dešimtainis> pažymius)
{
viešasStudentas(tarpt ID, styga vardas): tai(id, vardas, eilėraštis. Tuščias <dešimtainis>()) { }
viešastarpt Id => id;
viešasstyga Vardas { gauti; rinkinys; } = vardas. Apkarpyti();
viešasdešimtainis GPA => pažymiai. Bet koks ()? pažymių. Vidutinis (): 4.0m;
}

Pirminio konstruktoriaus parametrai apima visą deklaruojančio tipo turinį. Galite nustatyti ypatybes ar laukus arba naudoti juos metoduose ar vietinėse funkcijose kaip kintamuosius. Šiuos parametrus galite pateikti ir pagrindiniam konstruktoriui.

Interpoliuotų stygų patobulinimai

Interpoliuotos eilutės buvo naudojamos nuo C # 6. C# 12 dabar galite sukurti dinamines eilučių reikšmes naudodami sudėtingas išraiškas.

tarpt aš = 5;
styga išvestis = $ "I vertė yra {i}, o jo kvadratas yra {i*i}.";
Konsolė. WriteLine (išvestis);

Šis kodas išspausdina „i reikšmė yra 5, o jo kvadratas yra 25“.

Papildomų tipų direktyvų naudojimas

Naudodami C# 12, galite naudoti slapyvardžio naudojimo direktyvą, norėdami pavadinti bet kokį tipą, o ne tik pavadintus tipus. Galite sukurti semantinius slapyvardžius eilėms, masyvams, rodyklėms ar kitiems nesaugiems tipams.

Štai keli pavyzdžiai:

naudojant Matavimas = (styga vienetai, tarpt atstumas);
naudojant UnitsInt = tarpt?;
Slapyvardžių naudojimo pavyzdys:
viešastuštumaSkaičiavimas(Matavimo matavimas)
{
// Metodo korpusas
}

Lambda raiškos patobulinimai

C# 12 įgalina lambda išraiškas, leisdamas apibrėžti numatytąsias parametrų reikšmes. Sintaksė yra identiška kitų numatytųjų parametrų sintaksei:

Pavyzdžiui, (incrementTo = 5) => incrementTo + 1 nustato numatytąją incrementTo parametro reikšmę 5, kurią lambda iškvietimas naudos, jei neperduosite jam reikšmės.

var incrementWithDefault = (tarpt incrementTo = 5) => incrementTo + 1;
incrementWithDefault(); // 6
incrementWithDefault(9); // 10

Be to, buvo atlikta daug kitų lambda išraiškų patobulinimų, kad jos būtų veiksmingesnės.

Pavyzdžiui:

  • Dabar lambda funkcijose galite sukurti sudėtingesnes išraiškas.
  • Dabar galite paversti lambda išraiškas į išraiškų medžius, kurie supaprastina sudėtingas užklausas ir optimizuoja našumą.

Asinchroniniai srautai

Galite kartoti asinchroninius duomenų šaltinius naudodami naująjį asinchroniniai srautai C# 12 savybė. Šis naujas iteratorius –laukti foreach– padeda kartoti asinchroninių duomenų rinkinį:

lauktikiekvienam (var daiktas inGetItemsAsync())
{
Konsolė. WriteLine (elementas.vertė);
}

C# 12: Revoliucinis kodas su įdomiomis naujomis funkcijomis

Laukdami C# 12, galite tikėtis žaidimą keičiančio atnaujinimo su įdomiomis naujomis funkcijomis. Šios pažangos, tokios kaip patobulintos perjungimo išraiškos, pirminiai konstruktoriai ir lambda išraiškų patobulinimai, rodo didelį dėmesį kodo paprastumui, lankstumui ir našumui.

C# 12 yra pasirengusi padaryti reikšmingą šuolį į priekį, leisdama rašyti išraiškingesnį, efektyvesnį ir galingesnį kodą.