Programmering

Nye funktioner i C # 6

C # 6 leveres med Visual Studio 2015 og kommer med nogle interessante nye funktioner. Der er mange funktioner, der fremmer mindre kode rod og skriver renere, vedligeholdelig kode. I dette indlæg vil jeg gerne køre dig gennem nogle af de nye funktioner på C # sprog.

Undtagelsesfiltre

Undtagelsesfiltre er ikke nye i VB - nu har du også denne funktion i C #. Disse giver dig mulighed for at filtrere undtagelser i din kode baseret på sværhedsgrad. Her er et eksempel.

prøve

{

// nogle kode, der muligvis kaster en undtagelse

}

fange (Undtagelsesundtagelse) hvis (exception.GetType ()! = typeof (SqlException))

{

ExceptionManager.HandleException (undtagelse);

}

Ovenstående kode kontrollerer, om undtagelsen, der kastes, er af typen SqlException. Hvis ikke, håndteres undtagelsen. Her er et andet eksempel, der viser, hvordan du kan kontrollere meddelelsesegenskaben for undtagelsesobjektet og angive en betingelse i overensstemmelse hermed.

prøve

{

smid ny CustomException ("");

}

fange (CustomException ex) hvis (ex.Message == "")

{

// kontrol vil komme i denne fangstblok

}

fange (CustomException ex) hvis (ex.Message == "")

{

// kontrol kommer ikke i denne fangstblok

}

Støtte til asynkronisering i fangst og til sidst blokke

Dette er faktisk en fantastisk funktion. Vi logger ofte undtagelser fra en fil eller en database. Sådanne operationer er ressourceintensive og tidskrævende, da du bliver nødt til at få adgang til disken for at udføre I / O. I sådanne situationer ville det være dejligt, hvis du kan foretage asynkrone opkald i dine undtagelsesblokke. Du skal muligvis også udføre nogle oprydningsoperationer i den endelige blok, som kan være ressourceintensiv og / eller tidskrævende.

Med C # 6 behøver du ikke længere at blokere den aktuelle tråd, mens du udfører sådanne ressourceintensive eller tidskrævende operationer. Det næste kodestykke illustrerer, hvordan du kan bruge afvente nøgleord i fangst og til sidst blokke.

offentlig asynk Task ProcessAsync ()

{

prøve

{

// noget kode, der muligvis kaster en undtagelse

}

fangst

{

afventer Task.Delay (5000);

}

langt om længe

{

afventer Task.Delay (1000);

}

}

Følgende kodestykke viser, at du kan afvente et opkald til den tilpassede metode LogExceptionAsync () for at logge undtagelse.

prøve

{

// kode, der muligvis kaster en undtagelse

}

fangst (undtagelsesundtagelse)

{

afventer LogExceptionAsync (undtagelse);

}

Støtte til statiske "brug" -erklæringer

Dette er en anden dejlig ny funktion i C # 6, der giver dig mulighed for at påberåbe sig en statisk metode uden behov for eksplicitte referencer. Her er et eksempel.

ved hjælp af System;

ved hjælp af System.Console;

offentligt klasseprogram

{

privat statisk tomrum Main ()

{

WriteLine ("Nye funktioner i C # 6");

}

}

Som du kan se i ovenstående kodestykke, behøver du ikke længere specifikt angive typen, når du kalder den statiske WriteLine () -metode, der hører til klassen System.Console. I det væsentlige fremmer denne funktion renere kode - kode, der er lettere at læse, skrive og vedligeholde.

Initialisering af automatisk ejendom

Denne funktion giver dig mulighed for at indstille værdierne for egenskaber lige på det sted, hvor de erklæres.

klasse kunde

{

offentlig streng Fornavn {get; sæt; } = "Joydip";

public string LastName {get; sæt; } = "Kanjilal";

public int Age {get; sæt; } = 44;

}

I de tidligere versioner af C # har du ofte været nødt til at bruge standardkonstruktører til at indstille standardværdier til egenskaberne i klassen.

Her er et andet eksempel, der illustrerer en genvejssyntaks til initialisering af en egenskab ved erklæringspunkt, som en setter ikke er defineret for.

klasse LogManager

{

offentlig statisk LogManager-instans {get; } =

ny LogManager ();

}

Ordbog initialiserer

Denne funktion giver dig mulighed for at initialisere standardværdier i en ordbog med meget mindre kode. Her er et eksempel, der illustrerer dette.

klasse Program

{

statisk ugyldigt Main (streng [] args)

{

Ordbog dict = ny ordbog ()

{

["USA"] = "Washington DC",

["England"] = "London",

["India"] = "New Delhi"

};

}

}

Som du kan se i ovenstående kodestykke, er ordbogen initialiseret med standardværdier på det sted, hvor den er deklareret. En meget pænere tilgang sammenlignet med de tidligere versioner af C # -sproget, er det ikke?

Primær konstruktør

Dette er igen en fremragende ny funktion - det eliminerer smerten ved at skulle skrive kode for at initialisere datamedlemmer i en klasse fra parametrene i en konstruktormetode. Med andre ord giver denne funktion en syntaktisk genvej til definitionen af ​​en konstruktør i en klasse.

Her er et eksempel, der illustrerer, hvordan primære konstruktører kan bruges.

klasse medarbejder (streng fornavn, streng efternavn, streng adresse)

{

offentlig streng Fornavn {get; sæt; } = fornavn;

public string LastName {get; sæt; } = efternavn;

public string Address {get; sæt; } = adresse;

}

Du kan henvise til denne MSDN-artikel for at få flere oplysninger om de nye funktioner og forbedringer i C # 6.