Programavimas

Naujos C # 7 funkcijos

C # 7 prideda daug naujų funkcijų, ypatingą dėmesį skiriant kodavimo paprastumui ir didesniam našumui. Jame daug dėmesio skiriama duomenų vartojimui, kodo supaprastinimui ir našumui, ir jis skirtas pašalinti skausmą, kai reikia rašyti papildomą kodą daugiau nei vienu būdu.

Čia galite greitai pažvelgti į tai, kas nauja ir patobulinta C # 7.

  • Parama vietinėms funkcijoms
  • Patobulinta „Tuple Types“ parama
  • Įrašų tipai
  • Rašto derinimas
  • Nenuliuojami nuorodų tipai
  • Nekintami tipai
  • Geresnis kintamųjų palaikymas

Geresnis kintamųjų palaikymas

Galimybė paskelbti kintamąjį tiesiai naudojimo vietoje yra puiki nauja C # 7 funkcija. Čia yra tai iliustruojantis kodo fragmento pavyzdys.

public void Išsaugoti (produktas p)

{

p.SaveData (out int x);

// Įprastas kodas

}

Gera vieta naudoti kintamąjį yra jūsų bandymo bloke. Tiesiog naudokite „Boolean out“ kintamąjį, kai grąžinimo tipas „true“ rodo, kad operacija yra sėkminga, kitaip klaidinga.

Rašto derinimas

C # 7 puikiai palaiko modelių derinimą. Šablonų atitikimą galite naudoti bet kokio tipo duomenims, net ir pasirinktiniams duomenų tipams. Be to, jei norite išgauti reikšmes iš išraiškos, galite pasinaudoti šablonų derinimo pranašumais. Štai kodo fragmentas, iliustruojantis modelio derinimą darbe!

object obj = "Tai yra modelio atitikimo C # 7 pavyzdys";

jei (obj yra eilutė str)

{

Console.WriteLine (str);

}

Parama vietinėms funkcijoms

Jums dažnai gali prireikti pagalbinės funkcijos, kurią reikia naudoti tik vieną kartą - galbūt tik vienu metodu. Dabar tokias funkcijas galite deklaruoti kitos funkcijos viduje. Tokios funkcijos yra žinomos kaip vietinės funkcijos. Iš esmės vietinių funkcijų palaikymas leidžia deklaruoti metodus bloko srityje. Nors tai buvo įmanoma naudojant „Func“ ir „Action“ tipus su anoniminiais metodais ankstesnėse C # kalbos versijose, iššūkių buvo nedaug. Jie nepalaikė generinių vaistų, parametrų ir ref and out parametrų.

Geresnė parama „Tuples“

Tuple yra laikina vertybių grupė. Tai panaši į POCO klasę, tačiau sukurta skrendant. Pagrindinis „Tuple“ naudojimo pranašumas yra metodo įgalinimas grąžinti kelias reikšmes. Jei norite pateikti nevienalyčių duomenų rinkinį ir suteikti lengvą prieigą prie tų duomenų, galite naudoti po kelis. Tuplės nėra naujiena ir egzistuoja jau gana seniai. Jūs turite palaikymą F # ir Python programavimo kalbų rinkiniams. Galite naudoti dvigubą pranašumą, kad išsaugotumėte išsamią, baigtinę nekintamų, baigtinių, vienodo ar nevienalyčio fiksuoto dydžio duomenų seką.

Dabar jūs taip pat palaikote Tuple pažodžius ir Tuple dekonstrukcijas. C # 7 grupėje vertinimas laikomas vertės tipu. Taigi tai yra kintamas tipas ir daug efektyvesnis, kiek tai susiję su našumu.

Nenuliuojami nuorodų tipai

Nenuimamų verčių tipai pirmą kartą buvo įvesti C # 2.0 versijoje. Nenuliuojamas nuorodos tipas yra visiškai priešingas šiai funkcijai. Iš esmės nenurodomas nuorodos tipas naudojamas žymėti nuorodos tipą, kuris garantuoja, kad jis nebus nulinis. Štai kaip nenurodomas nuorodos tipas deklaruojamas C # 7:

stygos! str; // Tai nėra niekinis nuorodos tipas

Geresnė parama nekintamiems objektams

Nekintamas objektas yra tas, kurio būsena negali būti pakeista jį sukūrus. Tai daro nekintamą objekto siūlą saugų. Tarkime, kad sukūrėte klasę, kurioje yra ypatybė, turinti „getter“, bet be seterio. Taip, matyt, atrodo, kad klasės pavyzdys yra nekintamas. Tačiau vėliau, jei kas nors prideda seterį tam pačiam turtui, nekintamumas prarandamas, ar ne?

Būtent čia gelbėja geresnė parama nekintamiems tipams. Naudodami C # 7, galite sukurti naują egzempliorių pagal kitą egzempliorių. Štai kaip tai galima pasiekti.

var firstObject = naujas darbuotojas (101);

var secondObject = firstObject su {EmployeeId = 102};

Įrašų tipai

Įrašų tipai leidžia sukurti tipą naudojant tik ypatybes. Iš esmės įrašo tipas yra duomenų tipas, kurį sudaro tik savybės. Šis kodo fragmentas parodo, kaip galima deklaruoti įrašo tipą.

klasės stačiakampis (int aukštis, int plotis);

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