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.