Nove značajke u C # 7

C # 7 dodaje puno novih značajki s posebnim naglaskom na jednostavnost kodiranja i poboljšane performanse. Pruža veliku pozornost na potrošnju podataka, pojednostavljenje koda i performanse, a dizajniran je da eliminira bol zbog potrebe za pisanjem dodatnog koda na više načina.

Evo kratkog pregleda što je novo i poboljšano u C # 7.

  • Podrška za lokalne funkcije
  • Poboljšana podrška za vrste tuple
  • Vrste zapisa
  • Podudaranje uzoraka
  • Neponištivi referentni tipovi
  • Nepromjenjive vrste
  • Bolja podrška za vanjske varijable

Bolja podrška za vanjske varijable

Sposobnost deklariranja out varijable odmah na mjestu upotrebe sjajna je nova značajka u C # 7. Evo primjera isječka koda koji to ilustrira.

public void Save(Product p)

{

    p.SaveData(out int x);

    //Usual code

}

Dobro mjesto za upotrebu varijable nalazi se unutar vašeg bloka try. Samo upotrijebite logičku varijablu out gdje vrsta povratka true označava da je operacija uspješna, inače false.

Podudaranje uzoraka

C # 7 pruža izvrsnu podršku za podudaranje uzoraka. Podudaranje uzoraka možete koristiti na bilo kojoj vrsti podataka, čak i na prilagođenim vrstama podataka. Štoviše, možete iskoristiti podudaranje uzorka za izdvajanje vrijednosti iz izraza. Evo isječka koda koji ilustrira podudaranje uzoraka na poslu!

object obj = "This is a demonstration of pattern matching in C# 7";

if (obj is string str)

{

    Console.WriteLine(str);

}

Podrška za lokalne funkcije

Često će vam trebati pomoćna funkcija koju treba upotrijebiti samo jednom - možda u samo jednoj metodi. Sada takve funkcije možete prijaviti u drugoj funkciji. Takve su funkcije poznate kao lokalne funkcije. U osnovi, podrška za lokalne funkcije omogućuje vam deklariranje metoda unutar opsega bloka. Iako je to bilo moguće koristeći vrste Func i Action s anonimnim metodama u ranijim verzijama jezika C #, bilo je malo izazova. Nisu podržavali generičke, parametarske i ref i out parametre.

Bolja podrška za Tuples

Tuple je privremeno grupiranje vrijednosti. Slična je klasi POCO, ali ona koja se stvara u letu. Glavna prednost korištenja Tuplea je omogućavanje metode da vrati više vrijednosti. Možda ćete htjeti upotrijebiti tuple za predstavljanje skupa heterogenih podataka i pružiti jednostavan način pristupa tim podacima. Tuple nisu ništa novo i postoje već duže vrijeme. Imate podršku za korice u programskim jezicima F # i Python. Korist možete iskoristiti za pohranu uređenog, konačnog niza nepromjenjivih, konačnih nizova homogenih ili heterogenih podataka fiksnih veličina.

Sada imate podršku za Tuple literale i dekonstrukciju Tuplea. U C # 7, tuple se smatra vrstom vrijednosti. Stoga je promjenjiv tip i mnogo je učinkovitiji što se tiče izvedbe.

Neponištivi referentni tipovi

Vrijednosti koje se mogu poništiti prvi su put predstavljene u C # 2.0. Neponištivi referentni tip upravo je suprotan od ove značajke. U osnovi, referentni tip koji se ne može poništiti koristi se za označavanje referentnog tipa za koji zajamčeno nije null. Evo kako se u C # 7 deklarira referentna vrsta koja se ne može poništiti:

string! str; //This is a non-nullable reference type

Bolja podrška za nepromjenjive objekte

Nepromjenjivi je objekt čije se stanje ne može mijenjati nakon što se stvori. To čini nepromjenjivu nit niti sigurnom. Pretpostavimo da stvorite klasu koja sadrži svojstvo koje ima geter, ali nema postavljač. Da očito, čini se da je primjer klase nepromjenjiv. Međutim, kasnije, ako netko doda postavljač za isto svojstvo, nepromjenjivost se gubi, zar ne?

Ovdje upravo dolazi bolja podrška za nepromjenjive tipove. Pomoću C # 7 možete stvoriti novu instancu na temelju druge instance. Evo kako se to može postići.

var firstObject = new Employee(101);

var secondObject = firstObject with {EmployeeId = 102};

Vrste zapisa

Vrste zapisa omogućuju vam stvaranje vrste koristeći samo svojstva. U osnovi, vrsta zapisa je vrsta podataka koja se sastoji samo od svojstava. Sljedeći isječak koda ilustrira kako se vrsta zapisa može deklarirati.

 class Rectangle(int Height, int Breadth);