Programmering

Nye funksjoner i C # 6

C # 6 leveres med Visual Studio 2015 og kommer med noen interessante nye funksjoner. Det er mange funksjoner som fremmer mindre koderutter og skriver renere, vedlikeholdbar kode. I dette innlegget vil jeg kjøre deg gjennom noen av de nye funksjonene i C # språk.

Unntak filtre

Unntaksfiltre er ikke nye i VB - nå har du også denne funksjonen i C #. Disse lar deg filtrere unntak i koden din basert på alvorlighetsgrad. Her er et eksempel.

prøve

{

// noen kode som kan gi unntak

}

fange (Unntak unntak) hvis (unntak.GetType ()! = typeof (SqlException))

{

ExceptionManager.HandleException (unntak);

}

Ovennevnte kode sjekker om unntaket som kastes er av typen SqlException. Hvis ikke behandles unntaket. Her er et annet eksempel som viser hvordan du kan sjekke meldingsegenskapen til unntaksobjektet og spesifisere en tilstand i samsvar med dette.

prøve

{

kaste nye CustomException ("");

}

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

{

// kontroll vil komme i denne fangstblokken

}

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

{

// kontroll vil ikke komme i denne fangstblokken

}

Støtte for asynkronisering i fangst og til slutt blokkeringer

Dette er virkelig en flott funksjon. Vi logger ofte unntak fra en fil eller en database. Slike operasjoner er ressurskrevende og tidkrevende, ettersom du trenger tilgang til disken for å utføre I / U. I slike situasjoner vil det være flott om du kan ringe asynkrone anrop i unntaksblokkene dine. Du må kanskje også utføre noen oppryddingsoperasjoner i den endelige blokken som kan være ressurskrevende og / eller tidkrevende.

Med C # 6 trenger du ikke lenger å blokkere den gjeldende tråden mens du utfører slike ressurskrevende eller tidkrevende operasjoner. Kodebiten som er gitt nedenfor, illustrerer hvordan du kan bruke ventet nøkkelord i fangst og til slutt blokker.

offentlig asynk oppgaveprosessAsync ()

{

prøve

{

// noen kode som kan gi unntak

}

å fange

{

venter Task.Delay (5000);

}

endelig

{

venter på Task.Delay (1000);

}

}

Følgende kodebit viser at du kan avvente en samtale til den tilpassede metoden LogExceptionAsync () for å logge unntak.

prøve

{

// kode som kan gi unntak

}

fangst (unntak unntak)

{

avventer LogExceptionAsync (unntak);

}

Støtte for statiske "bruk" -uttalelser

Dette er en annen fin ny funksjon i C # 6 som lar deg påkalle en statisk metode uten behov for eksplisitte referanser. Her er et eksempel.

bruker System;

bruker System.Console;

offentlig klasse Program

{

privat statisk tomrom Main ()

{

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

}

}

Som du kan se i kodebiten ovenfor, trenger du ikke lenger å spesifisere typen når du ringer til den statiske WriteLine () -metoden som tilhører System.Console-klassen. I hovedsak fremmer denne funksjonen renere kode - kode som er lettere å lese, skrive og vedlikeholde.

Initialiserer for automatisk eiendom

Denne funksjonen lar deg sette verdiene til eiendommene rett der deklareres.

klasse Kunden

{

offentlig streng Fornavn {get; sett; } = "Joydip";

offentlig streng Etternavn {get; sett; } = "Kanjilal";

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

}

I de tidligere versjonene av C # har du ofte måttet bruke standardkonstruktører for å sette standardverdier til egenskapene i klassen.

Her er et annet eksempel som illustrerer en snarveisyntaks for å initialisere en eiendom på erklæringspunktet som en setter ikke er definert for.

klasse LogManager

{

offentlig statisk LogManager Instance {get; } =

ny LogManager ();

}

Ordliste initialiserer

Denne funksjonen lar deg initialisere standardverdiene i en ordbok med mye mindre kode. Her er et eksempel som illustrerer dette.

klasse Program

{

statisk tomrom Main (streng [] args)

{

Ordbok dikt = ny ordbok ()

{

["USA"] = "Washington DC",

["England"] = "London",

["India"] = "New Delhi"

};

}

}

Som du kan se i kodebiten ovenfor, har ordboken blitt initialisert med standardverdier på det punktet der den er erklært. En mye hyggeligere tilnærming sammenlignet med tidligere versjoner av C # -språket, er det ikke?

Primær konstruktør

Dette er igjen en utmerket ny funksjon - det eliminerer smerten ved å måtte skrive kode for å initialisere datamedlemmer i en klasse fra parametrene i en konstruktormetode. Med andre ord gir denne funksjonen en syntaktisk snarvei for definisjonen av en konstruktør i en klasse.

Her er et eksempel som illustrerer hvordan primærkonstruktører kan brukes.

klasse Ansatt (streng fornavn, streng etternavn, streng adresse)

{

offentlig streng Fornavn {get; sett; } = fornavn;

offentlig streng Etternavn {get; sett; } = etternavn;

public string Address {get; sett; } = adresse;

}

Du kan se på denne MSDN-artikkelen for mer informasjon om de nye funksjonene og forbedringene i C # 6.

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