Programmering

Nye funksjoner i C # 7

C # 7 legger til mange nye funksjoner med spesielt fokus på enkelhet i koding og forbedret ytelse. Det gir mye fokus på dataforbruk, kodeforenkling og ytelse, og det er designet for å eliminere smerten ved å måtte skrive ekstra kode på flere måter enn en.

Her er et raskt blikk på hva som er nytt og forbedret i C # 7.

  • Støtte for lokale funksjoner
  • Forbedret støtte for Tuple-typer
  • Opptakstyper
  • Mønster matching
  • Ikke refererbare referansetyper
  • Uforanderlige typer
  • Bedre støtte for ut-variabler

Bedre støtte for ut-variabler

Evnen til å erklære en ut-variabel rett ved brukspunktet er en flott ny funksjon i C # 7. Her er et eksempel på kodebit som illustrerer dette.

offentlig ugyldig Lagre (Produkt p)

{

s.SaveData (ut int x);

// Vanlig kode

}

Et godt sted å bruke variabelen er inne i prøveblokken din. Bare bruk en Boolean out-variabel der en returtype av true indikerer at operasjonen er vellykket, ellers falsk.

Mønster matching

C # 7 gir utmerket støtte for mønstermatching. Du kan bruke mønstermatching på hvilken som helst datatype, også på tilpassede datatyper. Videre kan du dra nytte av mønstermatching for å trekke ut verdier fra et uttrykk. Her er et kodebit som illustrerer mønstermatching på jobben!

object obj = "Dette er en demonstrasjon av mønstermatching i C # 7";

hvis (obj er strengstr)

{

Console.WriteLine (str);

}

Støtte for lokale funksjoner

Du trenger ofte en hjelperfunksjon som bare må brukes én gang - kanskje bare på en metode. Du kan nå erklære slike funksjoner i en annen funksjon. Slike funksjoner er kjent som lokale funksjoner. I hovedsak gjør støtten for lokale funksjoner deg i stand til å erklære metoder innenfor et blokkområde. Selv om det var mulig å bruke Func og Action-typer med anonyme metoder i de tidligere versjonene av C #-språket, var det få utfordringer. De støttet ikke generiske, params og ref og ut parametere.

Bedre støtte for tupler

En Tuple er en midlertidig gruppering av verdier. Det ligner på en POCO-klasse, men en som er opprettet i farta. Den største fordelen med å bruke en Tuple er at en metode kan returnere flere verdier. Det kan være lurt å bruke en tuple for å representere et sett med heterogene data og gi en enkel måte å få tilgang til dataene på. Tuples er ikke noe nytt og har eksistert i ganske lang tid nå. Du har støtte for tupler i programmeringsspråkene F # og Python. Du kan dra nytte av en tuple for å lagre en ordnet, endelig sekvens av uforanderlig, endelig sekvens av homogene eller heterogene data med faste størrelser.

Du har nå støtte for Tuple-bokstaver og Tuple-dekonstruksjon også. I C # 7 blir en tuple betraktet som en verditype. Derfor er det en foranderlig type og mye mer effektiv når det gjelder ytelse.

Ikke-nullbare referansetyper

Nullable value types ble først introdusert i C # 2.0. Ikke-nullbar referansetype er nøyaktig det motsatte av denne funksjonen. I hovedsak brukes en ikke-nullbar referansetype for å betegne en referansetype som garantert ikke er null. Slik erklæres en ikke-nullbar referansetype i C # 7:

streng! str; // Dette er en ikke-nullbar referansetype

Bedre støtte for uforanderlige gjenstander

Et uforanderlig objekt er en tilstand som ikke kan endres når den er opprettet. Dette gjør en uforanderlig gjenstandstråd trygg. Anta at du oppretter en klasse som inneholder en eiendom som har en getter, men ingen setter. Ja tilsynelatende, det ser ut til at en forekomst av klassen er uforanderlig. Imidlertid, på et senere tidspunkt, hvis noen legger til en setter for den samme eiendommen, er uforanderligheten tapt, er det ikke?

Her er nøyaktig hvor bedre støtte for uforanderlige typer kommer til unnsetning. Med C # 7 kan du opprette en ny forekomst basert på en annen forekomst. Slik kan du oppnå dette.

var firstObject = ny ansatt (101);

var secondObject = firstObject med {EmployeeId = 102};

Opptakstyper

Posttyper lar deg lage en type som bare bruker egenskaper. I hovedsak er en posttype en datatype som bare består av egenskaper. Følgende kodebit illustrerer hvordan en posttype kan deklareres.

klasse Rektangel (int Høyde, int Bredde);

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