Programiranje

Nove funkcije v C # 6

C # 6 je priložen Visual Studio 2015 in ponuja nekaj zanimivih novih funkcij. Obstaja veliko funkcij, ki spodbujajo manj nereda in pisanje čistejše, vzdrževalne kode. V tej objavi bi vam rad predstavil nekaj novih funkcij v jeziku C #.

Filtri izjem

Filtri izjem v VB niso novi - zdaj imate to funkcijo tudi v jeziku C #. Ti vam omogočajo filtriranje izjem v kodi glede na resnost. Tu je primer.

poskusite

{

// nekaj kode, ki bi lahko povzročila izjemo

}

catch (izjema izjema) if (izjeme.GetType ()! = typeof (SqlException))

{

ExceptionManager.HandleException (izjema);

}

Zgornja koda preveri, ali je vržena izjema tipa SqlException. V nasprotnem primeru se obravnava izjema. Tu je še en primer, ki prikazuje, kako lahko preverite lastnost sporočila predmeta izjema in ustrezno določite pogoj.

poskusite

{

vrzi nov CustomException ("");

}

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

{

// nadzor bo prišel v tem bloku ulova

}

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

{

// nadzor ne bo prišel v tem bloku ulova

}

Podpora za asinhronost pri ulovu in končno blokiranje

To je res odlična lastnost. Izjeme pogosto zapišemo v datoteko ali bazo podatkov. Takšne operacije so dolgotrajne in dolgotrajne, saj bi morali za izvajanje V / I dostopati do diska. V takih situacijah bi bilo super, če bi lahko izvajali asinhrone klice znotraj svojih blokov izjem. Morda boste morali v končnem bloku izvesti tudi nekaj postopkov čiščenja, ki so lahko dolgotrajni in / ali dolgotrajni.

S C # 6 vam ni treba več blokirati trenutne niti, medtem ko izvajate tako zahtevne ali dolgotrajne operacije. Delček kode, ki je dan v nadaljevanju, ponazarja, kako lahko uporabite ključno besedo await v catch in na koncu blokira.

javno asinh. opravilo ProcessAsync ()

{

poskusite

{

// nekaj kode, ki bi lahko povzročila izjemo

}

ulov

{

počakajte Task.Delay (5000);

}

končno

{

počakajte Task.Delay (1000);

}

}

Naslednji delček kode prikazuje, da lahko čakate na klic metode po meri LogExceptionAsync () za beleženje izjeme.

poskusite

{

// koda, ki lahko povzroči izjemo

}

ulov (izjema izjema)

{

počakajte LogExceptionAsync (izjema);

}

Podpora za statične stavke "z uporabo"

To je še ena lepa nova funkcija v C # 6, ki vam omogoča, da prikličete statično metodo brez potrebe po eksplicitnih referencah. Tu je primer.

z uporabo sistema;

z uporabo System.Console;

program javnega razreda

{

zasebna statična praznina Main ()

{

WriteLine ("Nove funkcije v C # 6");

}

}

Kot lahko vidite v zgornjem delčku kode, vam ni treba več izrecno navajati vrste, ko prikličete statično metodo WriteLine (), ki pripada razredu System.Console. V bistvu ta funkcija promovira čistejšo kodo - kodo, ki jo je lažje brati, pisati in vzdrževati.

Samodejni inicializatorji lastnosti

Ta funkcija vam omogoča, da nastavite vrednosti lastnosti na mestu, kjer so prijavljene.

razred Stranka

{

javni niz FirstName {get; set; } = "Joydip";

javni niz LastName {get; set; } = "Kanjilal";

javni int Starost {get; set; } = 44;

}

V starejših različicah C # ste morali pogosto uporabljati privzete konstruktorje za nastavitev privzetih vrednosti na lastnosti v razredu.

Tu je še en primer, ki prikazuje sintakso bližnjice za inicializacijo lastnosti na točki deklaracije, za katero nastavitelj ni bil definiran.

razreda LogManager

{

javni statični primerek LogManagerja {get; } =

nov LogManager ();

}

Inicializatorji slovarjev

Ta funkcija vam omogoča, da privzete vrednosti v slovarju inicializirate z veliko manj kode. Tu je primer, ki to ponazarja.

razredni program

{

statična praznina Main (string [] args)

{

Slovar dict = nov slovar ()

{

["ZDA"] = "Washington DC",

["England"] = "London",

["India"] = "New Delhi"

};

}

}

Kot lahko vidite v zgornjem delčku kode, je bil slovar inicializiran s privzetimi vrednostmi na točki, kjer je bil razglašen. Veliko lepši pristop v primerjavi s prejšnjimi različicami jezika C #, kajne?

Primarni konstruktor

To je spet odlična nova lastnost - odpravlja bolečino zaradi pisanja kode za inicializacijo podatkovnih članov razreda iz parametrov v konstruktorski metodi. Z drugimi besedami, ta funkcija zagotavlja skladenjsko bližnjico za definicijo konstruktorja v razredu.

Tu je primer, ki ponazarja, kako je mogoče uporabiti primarne konstruktorje.

razred Zaposleni (niz firstName, string lastName, naslov niza)

{

javni niz FirstName {get; set; } = firstName;

javni niz LastName {get; set; } = priimek;

javni niz Naslov {get; set; } = naslov;

}

Za več informacij o novih funkcijah in izboljšavah v C # 6 lahko preberete ta članek MSDN.

$config[zx-auto] not found$config[zx-overlay] not found