Programmēšana

Jaunas funkcijas C # 6

C # 6 tiek piegādāts kopā ar Visual Studio 2015 un piedāvā dažas interesantas jaunas funkcijas. Ir daudzas funkcijas, kas veicina mazāku kodu pārblīvēšanu un tīrāku, uzturējamu kodu. Šajā ierakstā es vēlētos iepazīstināt jūs ar dažām jaunajām funkcijām C # valodā.

Izņēmuma filtri

Izņēmuma filtri VB nav jaunums - tagad šī funkcija ir pieejama arī C #. Tie ļauj filtrēt izņēmumus savā kodā, pamatojoties uz smaguma pakāpi. Šeit ir piemērs.

mēģiniet

{

// kāds kods, kas varētu radīt izņēmumu

}

catch (izņēmuma izņēmums) if (izņēmums. GetType ()! = typeof (SqlException))

{

ExceptionManager.HandleException (izņēmums);

}

Iepriekš minētais kods pārbauda, ​​vai izmestais izņēmums ir SqlException tips. Ja nē, izņēmums tiek apstrādāts. Šis ir vēl viens piemērs, kas parāda, kā jūs varat pārbaudīt izņēmuma objekta rekvizītu Ziņojums un attiecīgi norādīt nosacījumu.

mēģiniet

{

mest jaunu CustomException ("");

}

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

{

// vadība nonāks šajā nozvejas blokā

}

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

{

// vadība šajā nozvejas blokā nenonāks

}

Atbalsts asinhronijai nozvejā un visbeidzot bloķē

Tā patiešām ir lieliska īpašība. Mēs bieži reģistrējam izņēmumus failā vai datu bāzē. Šādas darbības prasa daudz resursu un prasa daudz laika, jo, lai veiktu I / O, jums vajadzētu piekļūt diskam. Šādās situācijās būtu lieliski, ja izņēmumu blokos varat veikt asinhronus zvanus. Jums, iespējams, būs jāveic dažas tīrīšanas darbības pēdējā blokā, kas varētu būt resursu ietilpīgs un / vai laikietilpīgs.

Izmantojot C # 6, jums vairs nav nepieciešams bloķēt pašreizējo pavedienu, veicot šādas resursu ietilpīgas vai laikietilpīgas darbības. Tālāk sniegtais koda fragments parāda, kā jūs varat izmantot gaidīšanas atslēgvārdu noķeršanā un visbeidzot bloķē.

publiskais asinhronais uzdevuma process Async ()

{

mēģiniet

{

// kāds kods, kas varētu radīt izņēmumu

}

noķert

{

gaidiet Task.Kavēšanās (5000);

}

beidzot

{

gaidiet Uzdevums. Aizkave (1000);

}

}

Šis koda fragments parāda, ka varat gaidīt izsaukumu uz pielāgoto metodi LogExceptionAsync (), lai reģistrētu izņēmumu.

mēģiniet

{

// kods, kas varētu radīt izņēmumu

}

nozveja (izņēmuma izņēmums)

{

gaidīt LogExceptionAsync (izņēmums);

}

Statisko "izmantojot" paziņojumu atbalsts

Šī ir vēl viena jauka jauna funkcija C # 6, kas ļauj izmantot statisko metodi, kas neprasa skaidras atsauces. Šeit ir piemērs.

izmantojot sistēmu;

izmantojot System.Console;

sabiedrības klases programma

{

privāta statiska anulēšana Main ()

{

WriteLine ("Jaunas iespējas C # 6");

}

}

Kā redzat iepriekš minētajā koda fragmentā, jums vairs nav skaidri jānorāda veids, izsaucot statisko WriteLine () metodi, kas pieder sistēmai System.Console. Būtībā šī funkcija veicina tīrāku kodu - kodu, kuru ir vieglāk lasīt, rakstīt un uzturēt.

Auto īpašuma inicializētāji

Šī funkcija ļauj iestatīt rekvizītu vērtības tieši tajā vietā, kur tās deklarētas.

klases Klients

{

publiskā virkne FirstName {get; komplekts; } = "Joydip";

publiskā virkne Uzvārds {get; komplekts; } = "Kanjilal";

public int Vecums {get; komplekts; } = 44;

}

Iepriekšējās C ​​# versijās jums bieži nācās izmantot noklusējuma konstruktorus, lai iestatītu noklusējuma vērtības klases īpašībām.

Šis ir vēl viens piemērs, kas ilustrē saīsnes sintaksi, lai inicializētu rekvizītu deklarēšanas punktā, kuram nav noteikts seteris.

klases LogManager

{

publiskā statiskā LogManager instance {get; } =

jauns LogManager ();

}

Vārdnīcas inicializētāji

Šī funkcija ļauj inicializēt noklusējuma vērtības vārdnīcā ar daudz mazāku kodu. Šeit ir piemērs, kas to ilustrē.

klases programma

{

static void Main (virkne [] args)

{

Vārdnīca dict = jauna vārdnīca ()

{

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

["Anglija"] = "Londona",

["India"] = "Ņūdeli"

};

}

}

Kā redzat iepriekš minētajā koda fragmentā, vārdnīca ir inicializēta ar noklusējuma vērtībām tajā vietā, kur tā ir deklarēta. Daudz jaukāka pieeja, salīdzinot ar iepriekšējām C # valodas versijām, vai ne?

Galvenais konstruktors

Tas atkal ir lieliska jauna funkcija - tas novērš sāpes, kas rodas, ja ir jāraksta kods, lai inicializētu klases datu dalībniekus, no konstruktora metodes parametriem. Citiem vārdiem sakot, šī funkcija nodrošina sintaktisko saīsni konstruktora definēšanai klasē.

Šeit ir piemērs, kas ilustrē to, kā var izmantot primāros konstruktorus.

klases darbinieks (string firstName, string lastName, string adrese)

{

publiskā virkne FirstName {get; komplekts; } = vārds;

publiskā virkne Uzvārds {get; komplekts; } = uzvārds;

publiska virkne Adrese {get; komplekts; } = adrese;

}

Lai iegūtu papildinformāciju par jaunajām funkcijām un uzlabojumiem C # 6, varat atsaukties uz šo MSDN rakstu.

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