Programování

Nové funkce v C # 6

C # 6 je dodáván s Visual Studio 2015 a přichází s některými zajímavými novými funkcemi. Existuje spousta funkcí, které podporují menší nepořádek kódu a čistší a udržovatelný kód pro psaní. V tomto příspěvku bych vás rád provedl některými novými funkcemi v jazyce C #.

Filtry výjimek

Filtry výjimek nejsou ve VB nové - nyní máte tuto funkci také v C #. Ty vám umožňují filtrovat výjimky v kódu na základě závažnosti. Zde je příklad.

Snaž se

{

// nějaký kód, který by mohl vyvolat výjimku

}

catch (Výjimka výjimky) if (exception.GetType ()! = typeof (SqlException))

{

ExceptionManager.HandleException (výjimka);

}

Výše uvedený kód kontroluje, zda je vyvolána výjimka typu SqlException. Pokud ne, výjimka je zpracována. Zde je další příklad, který ukazuje, jak můžete zkontrolovat vlastnost Message objektu výjimky a podle toho určit podmínku.

Snaž se

{

hodit novou CustomException ("");

}

catch (CustomException ex) if (ex.Message == "")

{

// v tomto bloku úlovku přijde kontrola

}

catch (CustomException ex) if (ex.Message == "")

{

// v tomto bloku úlovku nepřijde kontrola

}

Podpora asynchronie v catch a nakonec blokuje

To je opravdu skvělá funkce. Výjimky často zaznamenáváme do souboru nebo databáze. Takové operace jsou náročné na zdroje a čas, protože k provedení I / O byste potřebovali přístup na disk. V takových situacích by bylo skvělé, kdybyste mohli provádět asynchronní volání uvnitř svých bloků výjimek. Možná budete také muset provést některé operace vyčištění v bloku finally, které mohou být náročné na zdroje a / nebo časově náročné.

S C # 6 již nemusíte blokovat aktuální vlákno při provádění takových operací náročných na prostředky nebo časově náročných. Níže uvedený fragment kódu ukazuje, jak můžete použít klíčové slovo await v blocích catch a nakonec.

veřejná asynchronní úloha ProcessAsync ()

{

Snaž se

{

// nějaký kód, který by mohl vyvolat výjimku

}

chytit

{

čekat na Task.Delay (5000);

}

Konečně

{

čekat na Task.Delay (1000);

}

}

Následující fragment kódu ukazuje, že můžete čekat na volání vlastní metody LogExceptionAsync () pro zaznamenání výjimky.

Snaž se

{

// kód, který by mohl vyvolat výjimku

}

chytit (výjimka výjimka)

{

čekat LogExceptionAsync (výjimka);

}

Podpora statických příkazů „using“

Toto je další pěkná nová funkce v C # 6, která vám umožňuje vyvolat statickou metodu bez nutnosti explicitních odkazů. Zde je příklad.

pomocí systému;

pomocí System.Console;

program veřejné třídy

{

private static void Main ()

{

WriteLine ("Nové funkce v C # 6");

}

}

Jak vidíte ve výše uvedeném fragmentu kódu, již nemusíte explicitně určovat typ při volání statické metody WriteLine (), která patří do třídy System.Console. Tato funkce v zásadě podporuje čistší kód - kód, který je snadnější číst, psát a udržovat.

Automatické inicializátory vlastností

Tato funkce umožňuje nastavit hodnoty vlastností přímo na místě, kde jsou deklarovány.

třída Zákazník

{

public string FirstName {get; soubor; } = "Joydip";

veřejný řetězec Příjmení {get; soubor; } = "Kanjilal";

public int Age {get; soubor; } = 44;

}

V dřívějších verzích C # jste museli často používat výchozí konstruktory k nastavení výchozích hodnot na vlastnosti ve třídě.

Tady je další příklad, který ilustruje syntaxi zkratky pro inicializaci vlastnosti v bodě deklarace, pro kterou nebyl definován setter.

třída LogManager

{

public static LogManager Instance {get; } =

nový LogManager ();

}

Inicializátory slovníku

Tato funkce umožňuje inicializovat výchozí hodnoty ve slovníku s mnohem menším množstvím kódu. Zde je příklad, který to ilustruje.

třídní program

{

static void Main (řetězec [] args)

{

Slovník dict = nový slovník ()

{

["USA"] = "Washington DC",

["England"] = "London",

["India"] = "Nové Dillí"

};

}

}

Jak vidíte ve výše uvedeném fragmentu kódu, slovník byl inicializován s výchozími hodnotami v místě, kde byl deklarován. Mnohem hezčí přístup ve srovnání s předchozími verzemi jazyka C #, že?

Primární konstruktor

Toto je opět vynikající nová funkce - eliminuje bolest z nutnosti psát kód pro inicializaci datových členů třídy z parametrů v metodě konstruktoru. Jinými slovy, tato funkce poskytuje syntaktickou zkratku pro definici konstruktoru ve třídě.

Zde je příklad, který ilustruje, jak lze použít primární konstruktory.

třída Zaměstnanec (řetězec křestní jméno, řetězec příjmení, adresa řetězce)

{

public string FirstName {get; soubor; } = křestní jméno;

veřejný řetězec Příjmení {get; soubor; } = příjmení;

public string Adresa {get; soubor; } = adresa;

}

V tomto článku MSDN najdete další informace o nových funkcích a vylepšeních v C # 6.