- generalizări
- stiluri mixte
- metode anonime
- iteratori
- tipuri de Null
- Variabilele locale tipizabile Implicit
- Initializatori obiecte și colecții
- punerea în aplicare automată a proprietăților
- tipuri anonime
- metode de extensie
- cereri
- Lambda Expresiile
- arbori de expresie
- legare dinamică
- Numit și argumente opționale
- covarianță generalizate și contravariance
- Conceptul de bibliotecă TPL și sarcini de clasă de sarcini
- clasa MemoryCache
- TAP șablon
- Metode și așteaptă Asynchronous async
- Pentru informații despre obiectul de asteptare
- Compilatorul ca serviciu
- Import tipuri de membru statice într-un spațiu de nume
- exclude filtrele
- așteaptă în blocuri de captură / în cele din urmă
- initializatori autoprops
- Valorile implicite pentru get -Properties
- chirurgie nulă în mod condiționat (. și? [])
- linii de interpolare
- nameof operatorul
- Dicționar initializare
- Funcții comprimat la expresii
- exemplu variabile out
- potrivire de model
- Template-uri este
- Șabloane și declarație comutator
- tuple
- tuple despachetare
- funcții locale
- Îmbunătățiri literali
- Variabilele locale și a valorilor de referință prin retur
- Extinderea listei de tipuri, care sunt returnate prin metoda asincron
- Mai mulți membri ai clasei în formă de expresii
- arunca expresie
versiunea 1.0
Prima versiune de C # care amintește de Java 1.4 oportunitățile, mai multe dintre lor expansiune: în C # au proprietăți (. Privind în codul ca un câmp al obiectului, ci, de fapt, cauza referindu-se la ele metode de clasă), indexatorii (cum ar fi proprietăți, dar are un indice de parametru array) evenimente. delegați. cicluri foreach. structură. a trecut prin valoare, conversia automată a încorporat în tipuri de obiecte, atunci când este necesar (box), atribute, built-in interacțiunea cu codul unmanaged (DLL. com) și așa mai departe.
În plus, în C #, sa decis să transfere o parte din caracteristicile C ++, absente în Java: tipuri de nesemnate, supraîncărcarea operatorului (cu unele restricții, spre deosebire de C ++), parametrii de transmisie în metoda link-ul. metode cu un număr variabil de parametri, goto operatorului (cu restricții). De asemenea, în C # a lăsat o capacitate limitată de a lucra cu indicii - în locurile special marcate de cod nesigure și cuvânt, specificând o opțiune specială compilator.
versiunea 2.0
versiunea 3.0
Noile caracteristici în versiunea 3.0
În C # 3.0 introduce următoarele adăugări radicale limba:
- selectați cuvinte cheie, de la, în cazul în care. permite interogări de documente XML, colecții și așa mai departe .. Aceste întrebări sunt similare cu interogări SQL și componenta LINQ implementate. (Foarte fraza «limbaj de interogare integrată» tradus ca „interogare integrată în limba.“)
- Inițializarea obiectului împreună cu proprietățile sale:
Acesta poate fi scris ca
Puteți fi acum scris ca
- arbori de expresie:
- Concluzia tipurilor variabile locale: var x = „hello“; în loc de string x = "hello";
- Tipuri de Unnamed: var x = new
; - Extension-metode - adăugarea unei metode la o clasă existentă folosind acest cuvânt cheie în primul parametru al funcției statice.
- Proprietăți automate: compilatorul va genera o cutie închisă (privată) și accessor corespunzătoare și Mutator pentru codul speciilor
C # 3.0 este compatibil cu C # 2.0 pe MSIL-codul generat; îmbunătățiri în limbaj - o pur sintactice și puse în aplicare la momentul compilarii. De exemplu, multe interogări integrate LINQ poate fi realizată cu ajutorul delegaților anonime, în combinație cu metode predicat peste containerele și cum ar fi List.FindAll List.RemoveAll.
versiunea 4.0
Noile caracteristici în versiunea 4.0 [16]- Capacitatea de a utiliza cu întârziere de legare, pentru:
- în alte limbi, în mod dinamic tastat (Python. Ruby)
- COM-obiecte cu
- reflexie (reflexie)
- obiecte cu structură variabilă (DOM). Cuvinte cheie apar dinamic.
- Numit și parametrii opționali
- Noile caracteristici COM Interop
- interfețele și delegații generice covariant și contravariant
- Contracte în (cod contracte)
- TPL TPL (Sarcina Biblioteca paralel), conceptul de sarcini și clase de sarcini. TaskFactory. paralel
- Adăugat clasa MemoryCache. care este destinat pentru cache de conținut. Este similar cu o clasa Cache ASP.NET, dar poate fi utilizată la scrierea de aplicatii / grafica / consola VEB.
versiunea 5.0
Noile caracteristici în versiunea 5.0
- șablon TAP (bazată pe sarcini Asynchronous Pattern). TAP utilizează o metodă pentru reprezentarea inițializarea și finalizarea unei operațiuni asincron.
- Metodele asincronă (asin și așteaptă) - ca realizare șablon TAP.
versiunea 6.0
Noile caracteristici în versiunea 6.0
- chirurgie nulă în mod condiționat (. și? [])
- Funcții comprimate la expresiile (funcții de expresie bodied)
- proprietăţile initializatori
- indicii initializatori
- linii de interpolare
- exclude filtrele
- Import funcții statice ale clasei
- nameof operatorul
- așteaptă în interiorul blocurilor de captură și în cele din urmă
versiunea 7.0
Noile caracteristici în versiunea 7.0 [13]
- variabile de instanta din care permit să declare imediat variabile într-un apel de metodă (și unitatea de suprafață de vizibilitate din exterior este pentru astfel de variabile):
- potrivire de model. Noi introducem conceptul unui șablon (model), care este o sintaxă care permite potrivirea verificare variabilă anumită formă și extrage informații de pe acesta.
- Șabloanele este (este acum pot fi folosite nu numai cu tipul, dar cu un model - ca argument dreapta)
- Șabloane și comutator de expresie. a fost extins de variante cu ajutorul unui comutator, acum puteți:
- folosi orice tip (nu numai primitiv);
- utilizați șabloane în expresia caz;
- adăuga condiții suplimentare la cazul expresiilor (folosind cuvântul cheie atunci când).
- Tupluri. A adăugat o nouă sintaxă tuplu tip de valoare și de a lucra cu acest tip de date:
- tuplu despachetarea. deconstructor nouă structură de sintaxă a fost adăugat. vă permite de a extrage un tuplu format din membrii clasei.
- Funcții locale. Acum, funcția care este utilizat numai în corpul unei metode poate fi declarată în mod direct în corpul acestei metode.
- Îmbunătățiri literali. literali binare și caracterul delimitator au fost adăugate (_) în literali numerice.
- Variabilele locale și valorile de returnare prin referință. cuvinte cheie ref funcționalitate extinsă. Acum puteți recupera datele dintr-o metodă, sau să le salvați într-o variabilă locală prin referință.
- Extinderea listei de tipuri, care sunt returnate prin metoda asincron
- Mai mulți membri ai clasei sub formă de expresii. Funcții de sintaxă comprimate pentru exprimare (funcții de expresie bodied) sunt acum aplicabile Normalizatorii, getters, constructori și destructori.
- arunca -vyrazheniya. Acum puteți utiliza pentru a arunca funcția de comprimare a expresiei (funcții de expresie corpolent):
Exemplu «Bună ziua, lume!»
Iată codul programului clasic «Bună ziua lume» în C # pentru aplicarea consola: