C # 6 sa dodáva s Visual Studio 2015 a prichádza s niekoľkými zaujímavými novými funkciami. Existuje veľa funkcií, ktoré podporujú menej neporiadku v kóde a čistejšie udržiavateľný kód pri písaní. V tomto príspevku by som vás rád oboznámil s niektorými novými funkciami v jazyku C #.
Filtre výnimiek
Filtre výnimiek nie sú vo VB nové - teraz máte túto funkciu aj v C #. Umožňujú vám filtrovať výnimky v kóde podľa závažnosti. Tu je príklad.
skús
{
// nejaký kód, ktorý by mohol spôsobiť výnimku
}
catch (Výnimka výnimky) if (exception.GetType ()! = typeof (SqlException))
{
ExceptionManager.HandleException (výnimka);
}
Vyššie uvedený kód kontroluje, či je vyvolaná výnimka typu SqlException. Ak nie, výnimka sa spracuje. Tu je ďalší príklad, ktorý ukazuje, ako môžete skontrolovať vlastnosť Message objektu výnimky a podľa toho určiť podmienku.
skús
{
hodiť novú CustomException ("");
}
catch (CustomException ex) if (ex.Message == "")
{
// v tomto úlovkovom bloku príde kontrola
}
catch (CustomException ex) if (ex.Message == "")
{
// kontrola nepríde v tomto úlovkovom bloku
}
Podpora asynchrónie v blokoch catch a konečne
Toto je skutočne skvelá vlastnosť. Výnimky často zaznamenávame do súboru alebo databázy. Takéto operácie sú náročné na zdroje a čas, pretože na vykonanie I / O by ste potrebovali prístup na disk. V takýchto situáciách by bolo skvelé, keby ste vo svojich blokoch výnimiek mohli uskutočňovať asynchrónne hovory. Možno budete musieť vykonať niektoré operácie čistenia v bloku konečne, ktoré môžu byť náročné na zdroje a / alebo čas.
S C # 6 už nemusíte blokovať súčasné vlákno pri vykonávaní takýchto operácií náročných na zdroje alebo časovo náročných. Nasledujúci úryvok kódu ilustruje, ako môžete použiť kľúčové slovo await v blokoch catch a konečne.
verejná asynchronná úloha ProcessAsync ()
{
skús
{
// nejaký kód, ktorý by mohol spôsobiť výnimku
}
chytiť
{
čakať na Task.Delay (5000);
}
konečne
{
čaká Task.Delay (1000);
}
}
Nasledujúci úryvok kódu ukazuje, že môžete čakať na volanie vlastnej metódy LogExceptionAsync () na zaznamenávanie výnimiek.
skús
{
// kód, ktorý by mohol spôsobiť výnimku
}
úlovok (výnimka z výnimky)
{
čaká LogExceptionAsync (výnimka);
}
Podpora statických príkazov „using“
Toto je ďalšia príjemná nová funkcia v C # 6, ktorá vám umožňuje vyvolať statickú metódu bez potreby explicitných odkazov. Tu je príklad.
pomocou systému;
pomocou System.Console;
program verejnej triedy
{
private static void Main ()
{
WriteLine („Nové funkcie v C # 6“);
}
}
Ako vidíte vo vyššie uvedenom útržku kódu, už nemusíte explicitne určovať typ pri volaní statickej metódy WriteLine (), ktorá patrí do triedy System.Console. Táto funkcia v podstate podporuje čistejší kód - kód, ktorý sa ľahšie číta, píše a udržuje.
Automatické inicializátory vlastností
Táto vlastnosť umožňuje nastaviť hodnoty vlastností priamo na mieste, kde sú deklarované.
triedy Zákazník
{
verejný reťazec FirstName {get; sada; } = "Joydip";
verejný reťazec Priezvisko {get; sada; } = "Kanjilal";
public int Age {get; sada; } = 44;
}
V starších verziách C # ste museli často používať predvolené konštruktory na nastavenie predvolených hodnôt pre vlastnosti v triede.
Tu je ďalší príklad, ktorý ilustruje syntax skratky na inicializáciu vlastnosti v bode vyhlásenia, pre ktorý nebol definovaný setter.
trieda LogManager
{
verejná statická inštancia LogManager {get; } =
nový LogManager ();
}
Inicializátory slovníka
Táto funkcia umožňuje inicializovať predvolené hodnoty v slovníku s oveľa menším počtom kódov. Toto je príklad, ktorý to ilustruje.
triedny program
{
static void Main (reťazec [] args)
{
Slovník dict = nový slovník ()
{
["USA"] = "Washington DC",
["England"] = "London",
["India"] = "Naí Dillí"
};
}
}
Ako vidíte vo vyššie uvedenom útržku kódu, slovník bol inicializovaný s predvolenými hodnotami v mieste, kde bol deklarovaný. Oveľa príjemnejší prístup v porovnaní s predchádzajúcimi verziami jazyka C #, však?
Primárny konštruktor
Toto je opäť vynikajúca nová funkcia - eliminuje námahu pri písaní kódu na inicializáciu dátových členov triedy z parametrov v metóde konštruktora. Inými slovami, táto funkcia poskytuje syntaktickú skratku pre definíciu konštruktora v triede.
Tu je príklad, ktorý ilustruje, ako sa dajú použiť primárne konštruktory.
trieda zamestnanec (reťazec krstné meno, reťazec priezvisko, adresa reťazca)
{
verejný reťazec FirstName {get; sada; } = meno;
verejný reťazec Priezvisko {get; sada; } = priezvisko;
public string Adresa {get; sada; } = adresa;
}
V tomto článku MSDN nájdete ďalšie informácie o nových funkciách a vylepšeniach v C # 6.