'Y'

Prezentare generala C# 6.0

S-au scris destul de multe articole despre noile caracteristici ale C# dar as vrea si eu sa contribui cu cateva care in opinia mea sunt importante.

Feb 11, 2016 2142
S-au scris destul de multe articole despre noile caracteristici ale C# dar as vrea si eu sa contribui cu cateva care in opinia mea sunt importante.

String Interpolation

Aceasta este o caracteristica utila atunci cand trebuie sa generezi rows si bodies in alte date. Spre exemplu, atunci cand ai nevoie sa generezi o exceptie si sa adaugi valoarea unui argument mesajului:

1.jpg

Sau trebuie sa generezi un mesaj cand este o exceptie:

2.jpg

Si chiar fara o exceptie este util sa obtii o reprezentare string a obiectului:

3.jpg

In mod normal poti sa folosesti StringBuilder, apoi AppendFormat, si AppendLine, sau sa utilizezi AppendLine, dar sa folosesti string.Format. Acum, insa, poti sa folosesti AppendLine + String Interpolation:

4.jpg

Uneori in interiorul ‘{}’ poti sa folosesti orice expresie, inclusiv method calls, pentru a accesa si alte elemente in afara de variabile / campuri / proprietati.

Proprietati imbunatatite

Cea de-a doua trasatura consta intr-un set de imbunatatiri atunci cand vine vorba de lucrul cu proprietati. De multe ori, vreau sa am o clasa simpla cu cateva proprietati si imi place sa am cateva defaulturi simple. Un exemplu bun sunt cateva configurari de clase in setarile default:

5.jpg

S-ar putea sa fie un fleac dar noua abordare ofera avantaje semnificative deoarece necesita mai putin efort, pentru ca output-ul este mai scurt si usor de inteles.

Sau s-ar putea sa avem nevoie de un simplu data object cu proprietatea <T>.

6.jpg

Sau vrei o proprietate calculata sau mai multe care sa isi ia valoare dintr-un alt obiect. In acest caz ai putea sa folosesti:

7.jpg

Aici am aratat imediat ca expresia se aplica nu doar proprietatilor ci si metodelor. Astfel putem sa dezvoltam get-only auto-props, care pot fi schimbate doar in constructor:

8.jpg

Si fara custom backing fields aditionale!

Elvis Operator (?.)

Operatorul binecunoscut null-coalescing este pe locul 3 in lista mea. Acest truc este foarte util, dar nu se aplica asa cum ati crede.

9.jpg

Scurt si expresiv!

Insa, aceasta trasatura este utila nu doar pentru evenimentele ignition. Chiar daca ne place sau nu, null vin sau pleaca, si o conditional method call sau o conditional value chain objects sunt permanente. Acum, adaugati si operatorul null-coalescing (aka ‘??’) si obtineti un cod foarte expresiv:

10.jpg

Este foarte important sa nu mergem prea departe. Daca problema este lipsa unei valori, este foarte dificil sa ne dam seama de ce nu a fost capabila sa obtina valoarea si care obiect s-a dovedit a fi null.

Using static

Acum, puteti sa importati functii statice in domeniul de aplicare si sa le apelati fara un explicit type name. Acest lucru este foarte util atunci cand trebuie sa setati factory methods dar nu vreti sa specificati in mod permanent numele pentru factory:

11.jpg

Aici, insa, sunt avantaje si dezavantaje.

Pe de o parte, codul este mai usor de citit deoarece te poti concentra pe esenta problemei care trebuie rezolvata fara a fi nevoie sa aglomerezi code type name. Acum poti adauga cu usurinta DSL interne si sa obtii un cod usor de citit. Pe de alta parte, absenta unor tipuri explicite sugereaza ca metoda este intr-un loc in clasa noastra care poate sa fie confuz.

Mai avem si o trasatura interesanta atunci cand vine vorba de refactoring. Este usor pentru ca acum poti face o metoda in afara clasei si implementarea clasei actuale va ramane exact la fel. Dar daca te muti la o alta clasa manual trebuie sa o adaugi tu folosind static.

Index Initializer

Noul mod de initializare a indexers este util, dar aplicabilitatea este determinata in totalitate de sarcini. Mai mult aceasta caracteristica a fost utilizata in mod repetat in implementarea diferitelor factories:

12.jpg

Concluzii

Chiar daca nu vine la pachet cu caracteristici noi foarte importante limbajul C # 6.0 este foarte placut. Multe din caracteristici fac codul mai scurt si mai suor de citit. Interpolated strings, auto-props, Elvis operator – sunt trei elemente care te vor impresiona.

Sergey Teplyakov
Expert in .Net, С++ and Application Architecture

Daca iti place acest articol, distribuie-l si prietenilor tai!




Mai ai intrebari?
Contacteaza-ne.
Thank you.
Your request has been received.