Programavimas

Naujos C # 6 funkcijos

C # 6 pristatoma kartu su „Visual Studio 2015“ ir pateikiama įdomių naujų funkcijų. Yra daugybė funkcijų, skatinančių mažiau netvarkos ir švaresnio, prižiūrimo kodo. Šiame įraše norėčiau jums pristatyti keletą naujų funkcijų C # kalba.

Išimčių filtrai

Išimties filtrai nėra nauji VB - dabar šią funkciją turite ir C #. Tai leidžia filtruoti išimtis kode pagal sunkumą. Štai pavyzdys.

bandyti

{

// tam tikras kodas, kuris gali sukelti išimtį

}

pagauti (Išimties išimtis) if (išimtis.GetType ()! = typeof (SqlException))

{

ExceptionManager.HandleException (išimtis);

}

Aukščiau pateiktas kodas patikrina, ar metama išimtis yra „SqlException“ tipo. Jei ne, nagrinėjama išimtis. Štai dar vienas pavyzdys, parodantis, kaip galite patikrinti išimties objekto ypatybę Pranešimas ir atitinkamai nurodyti sąlygą.

bandyti

{

mesti naują CustomException ("");

}

gaudyti (ex „CustomException ex“), jei (pvz., Žinutė == "")

{

// valdymas bus šiame sugavimo bloke

}

gaudyti (ex „CustomException ex“), jei (pvz., Žinutė == "")

{

// valdymas nebus šiame sugavimo bloke

}

Parama asinchronijai gaudant ir galiausiai blokuoja

Tai tikrai puiki savybė. Mes dažnai registruojame išimtis faile ar duomenų bazėje. Tokios operacijos reikalauja daug išteklių ir užima daug laiko, nes norint įvesties / išvesties reikės prisijungti prie disko. Tokiomis situacijomis būtų puiku, jei išimčių blokuose galėtumėte atlikti asinchroninius skambučius. Jums taip pat gali tekti atlikti keletą valymo operacijų paskutiniame bloke, kuris gali būti daug išteklių reikalaujantis ir (arba) užimantis daug laiko.

Naudojant C # 6, jums nebereikia blokuoti dabartinės gijos, kai atliekate tokias daug išteklių reikalaujančias ar daug laiko reikalaujančias operacijas. Toliau pateiktas kodo fragmentas parodo, kaip galite naudoti laukimo raktinį žodį gaudant ir galiausiai blokuoja.

viešas asinchroninis užduoties procesas „Async“ ()

{

bandyti

{

// tam tikras kodas, kuris gali sukelti išimtį

}

pagauti

{

palaukite Užduotis. Vėlavimas (5000);

}

pagaliau

{

palaukite Užduotis. Vėlavimas (1000);

}

}

Šis kodo fragmentas rodo, kad galite laukti skambučio pasirinktiniu „LogExceptionAsync ()“ metodu, kad užregistruotumėte išimtį.

bandyti

{

// kodas, kuris gali sukelti išimtį

}

sugavimas (išimties išimtis)

{

laukti LogExceptionAsync (išimtis);

}

Statinių „naudojant“ teiginių palaikymas

Tai dar viena graži nauja C # 6 funkcija, leidžianti pasinaudoti statiniu metodu, be aiškių nuorodų poreikio. Štai pavyzdys.

naudojant sistemą;

naudojant System.Console;

visuomenės klasės programa

{

privati ​​statinė negaliojanti Main ()

{

WriteLine ("Naujos C # 6 funkcijos");

}

}

Kaip matote pirmiau pateiktame kodo fragmente, jums nebereikia aiškiai nurodyti tipo, kai iškviečiate statinį WriteLine () metodą, priklausantį „System.Console“ klasei. Iš esmės ši funkcija skatina švaresnį kodą - kodą, kurį lengviau skaityti, rašyti ir prižiūrėti.

Auto nuosavybės iniciatoriai

Ši funkcija leidžia nustatyti nuosavybių vertes tiesiai ten, kur jos deklaruojamos.

klasės Klientas

{

public string FirstName {get; rinkinys; } = "Joydipas";

vieša eilutė Pavardė {get; rinkinys; } = "Kanjilal";

public int Amžius {get; rinkinys; } = 44;

}

Ankstesnėse C # versijose dažnai turėjote naudoti numatytuosius konstruktorius, kad nustatytumėte numatytąsias klasės savybių reikšmes.

Štai dar vienas pavyzdys, iliustruojantis nuorodos sintaksę, norint inicijuoti ypatybę deklaravimo vietoje, kuriai nenustatytas seteris.

klasės „LogManager“

{

viešasis statinis „LogManager“ egzempliorius {get; } =

naujas „LogManager“ ();

}

Žodyno iniciatoriai

Ši funkcija leidžia inicijuoti numatytąsias žodyno reikšmes su daug mažesniu kodu. Čia yra tai iliustruojantis pavyzdys.

klasės programa

{

static void Main (string [] args)

{

Žodynas dict = naujas žodynas ()

{

["USA"] = "Vašingtonas DC",

["Anglija"] = "Londonas",

["India"] = "Naujasis Delis"

};

}

}

Kaip matote aukščiau pateiktame kodo fragmente, žodynas buvo inicializuotas numatytomis reikšmėmis toje vietoje, kur jis buvo deklaruotas. Daug gražesnis požiūris, palyginti su ankstesnėmis C # kalbos versijomis, ar ne?

Pirminis konstruktorius

Tai vėlgi yra puiki nauja funkcija - ji pašalina skausmą, kai reikia rašyti kodą, norint inicijuoti klasės duomenų narius, iš konstruktoriaus metodo parametrų. Kitaip tariant, ši funkcija suteikia sintaksinį nuorodą konstruktoriaus apibrėžimui klasėje.

Štai pavyzdys, iliustruojantis, kaip galima naudoti pirminius konstruktorius.

klasės darbuotojas (eilutės vardas, eilutės pavardė, eilutės adresas)

{

public string FirstName {get; rinkinys; } = vardasVardas;

vieša eilutė Pavardė {get; rinkinys; } = pavardė;

viešoji eilutė Adresas {get; rinkinys; } = adresas;

}

Šiame MSDN straipsnyje rasite daugiau informacijos apie naujas # 6 funkcijas ir patobulinimus.