Din cauza limitărilor tehnice, tipografia dorită a titlului nu a putut fi redată corect.
VS # | ||
Data primei versiuni | 2001 | |
---|---|---|
Paradigmă | Structurat , imperativ , orientat spre obiect | |
Autor | Microsoft | |
Ultima versiune | 9,0 (4 septembrie 2020) | |
Versiune de dezvoltare | 8.0 | |
Tastare | Static , puternic , nominativ | |
Dialecte | 1.0, 1.1, 1.2, 2.0 (ECMA), 3.0, 3.5, 4.0, 5.0, 6.0, 7.0, 7.1, 7.2, 7.3, 8.0, 9.0 | |
Influențată de | C ++ , Java | |
Influențat | Swift , Vala , F # , Kotlin , TypeScript | |
Implementări | Microsoft .NET , Mono , DotGNU | |
Sistem de operare | Cross-platform | |
Site-ul web | docs.microsoft.com/en-us/dotnet/csharp și docs.microsoft.com/de-de/dotnet/csharp | |
Extensie de fișier | .cs | |
C # ( C sharp [ s i ː . Ʃ ɑ ː p ] în engleza britanică ) este un limbaj de programare orientată pe obiecte , comercializat de Microsoft din 2002 și conceput să se extindă pe platforma Microsoft .NET .
Este derivat din C ++ și foarte aproape de Java, din care preia sintaxa generală, precum și conceptele, adăugând noțiuni precum supraîncărcarea operatorului , indexatori și delegați . Este utilizat în special pentru a dezvolta aplicații web pe platforma ASP.NET .
C # este un limbaj de programare orientat obiect , puternic tastat , derivat din C și C ++ , limbajul ca Java . Este folosit pentru a dezvolta aplicații web , precum și aplicații desktop, servicii web , comenzi, widget-uri sau biblioteci de clase. În C #, o aplicație este un pachet de clase în care una dintre clase are o metodă principală , așa cum se face în Java.
C # este destinat dezvoltării pe platforma .NET , un stack tehnologic creat de Microsoft pentru a reuși COM .
Executabile în C # sunt împărțite în ansambluri, spații de nume, clase și membri ai clasei. Un ansamblu este forma compilată, care poate fi un program (un executabil) sau o bibliotecă de clase (un dll). Un ansamblu conține codul executabil în MSIL, precum și simbolurile. Codul MSIL este tradus în limbajul mașinii în timpul rulării prin funcția just-in-time a platformei .NET.
C # este destinat dezvoltării pe platforma .NET. Inima acestei stive tehnologice este cadrul .NET , compus din:
Un alt produs al platformei .NET este mediul de dezvoltare Visual Studio .NET , un instrument utilizat de obicei pentru programarea în C #.
C # este un limbaj derivat din C ++ , oferă tastare sigură , precum și posibilități de încapsulare , moștenire și polimorfism al limbajelor orientate obiect. În C # toate tipurile sunt obiecte . Limba are un colector de gunoi și un sistem de manipulare a excepțiilor .
Tastarea sigură înseamnă, în special, că următoarele operații sunt refuzate: utilizarea unei variabile neinițializate, încercarea de a accesa dincolo de limitele unui tablou, conversii de tip ale căror rezultate nu sunt previzibile, depășirea limitelor în timpul operațiunilor aritmetice.
Multe dintre posibilitățile Java se găsesc în C # și există o asemănare puternică între codul scris în C # și codul echivalent în Java.
În C #, variabilele pot fi de tip referință sau de tip valoare . Tipurile de valori sunt tipuri primitive, enumerări, struct și tip nul. Tipurile de referință sunt clase, interfețe, tablouri și delegate .
Tipuri primitiveTipurile primitive sunt sbyte, short, int, long, byte, ushort, uint, ulong, char, float, double, decimal și bool.
clasăCele mai fundamentale constructe ale limbajului C # sunt clasele . Acestea pot conține constante, câmpuri, proprietăți, indexatori, metode, evenimente, operatori, constructori, destructori sau subclase. Clasele elementare sunt șir și obiect.
structStructurile sunt similare claselor, dar sunt tipuri de valori și nu pot fi moștenite .
delegaUn delegat este o referință la o metodă care are anumiți parametri. Delegații sunt folosiți pentru a atribui metode variabilelor și a le transmite ca parametri.
enumUn tip enumerat este un tip de valoare care are un set de constante. Fiecare tip enumerat are un tip de bază: un tip primitiv determinat în funcție de valorile constantelor.
tip nulNullables sunt tipuri primitive care pot fi în plus nule . Fiecare tip primitiv T are un tip nul nul asociat? De exemplu, o variabilă de tip int? poate conține un int sau nul.
Cuvintele cheie din C # 1.0 sunt:
abstract class event if new readonly as const explicit implicit null ref base continue extern in object return bool decimal false int operator sbyte break default finally interface out sealed byte delegate fixed internal override short case do float is params sizeof catch double for lock private stackalloc char else foreach long protected static checked enum goto namespace public string struct throw typeof unchecked using volatile switch true uint unsafe virtual while this try ulong ushort voidCuvinte cheie adăugate între C # 2.0 și 6.0:
add dynamic join select alias equals let set ascending from nameof value async get on var await global orderby where by group partial when descending into remove yieldLimbajul are o serie de modificări față de C / C ++; trebuie menționate în special următoarele puncte:
Deși C # este similar cu Java, există câteva diferențe notabile, de exemplu:
În septembrie 2002, platforma .NET și C # au fost prezentate publicului. C # devine limbajul de facto al acestei platforme, a fost folosit și pentru implementarea unei părți a platformei .NET.
versiuniAn | Versiune | Bibliotecă | Schimbare principală |
---|---|---|---|
2002 | 1.0 | .NET framework 1.0 și 1.1 | |
2005 | 2.0 | .NET framework 2.0 | genericitate adăugată la C # și cadru |
2008 | 3.0 | .NET framework 3.5 | LINQ (interogări lingvistice integrate) |
2010 | 4.0 | .NET framework 4.0 | tipuri dinamice |
2012 | 5.0 | .NET framework 4.5 | metode asincrone |
2015 | 6.0 | .NET framework 4.6 | versiune pentru Linux |
2016 | 7.0 | .NET framework> = 4.5 | Tuples, funcții locale |
2019 | 8.0 | .NET standard> = 2.1 și .NET Core> = 3.0 | ReadOnly Member, Operator de asociere de îmbinare |
Microsoft a pus la dispoziția publicului înOctombrie 2005, după o lungă perioadă de testare beta, versiunea 2.0 a bibliotecii .NET, însoțită de o nouă versiune a aproape tuturor instrumentelor asociate. C # nu face excepție de la regulă și, prin urmare, este lansat în versiunea 2.0, cu următoarele adăugiri:
Pentru referință, specificațiile complete ale noilor caracteristici introduse în versiunea 2.0 sunt disponibile la linkurile externe .
Anders Hejlsberg , tatăl lui Delphi, a vorbit despre implementarea genericelor în C #, Java și C ++ în acest interviu (în) .
Funcționalitatea tipurilor nulabile a fost corectată cu doar câteva săptămâni înainte de lansarea publică a versiunii 2.0, deoarece s-a dezvăluit că, dacă valoarea variabilei era într-adevăr zero, această variabilă nu era nulă în sensul tradițional al termenului, adică nu este o referință goală. Astfel, convertirea unui tip primitiv cu valoare zero la un obiect a dus la o referință diferită de zero la o valoare zero. Pentru a corecta această problemă, a fost, prin urmare, necesar să corectați nucleul CLR și să efectuați numeroase verificări și corecții pe toate produsele din gama .NET 2.0 (Visual Studio 2005, SQL Server 2005, C # și VB.NET).
C # 3.0 a fost prezentat la PDC 2005. Versiunea finală este disponibilă de atunci 19 noiembrie 2007pentru descărcare de pe site-ul Microsoft (en) . Principalele caracteristici noi sunt următoarele:
O prezentare generală a C # 3.0 și LINQ poate fi găsită pe pagina .NET Framework Development Center .
Codul compilat în C # 3.0 este pe deplin compatibil cu cel din 2.0, deoarece îmbunătățirile aduse sunt pur sintactice sau constau din comenzi rapide compensate în momentul compilării. Cu toate acestea, noile funcții introduse în bibliotecile versiunii 3.5 (LINQ etc.) nu pot fi utilizate cu versiunile anterioare ale C #.
Această versiune necesită Windows XP sau o versiune ulterioară ( Vista sau Windows 7 ). Nu este disponibil pentru Windows 2000 .
Limba versiunii 4 oferă mai multe funcții noi:
.NET 4.0 Cadrul a fost lansat pe12 aprilie 2010, însoțit de Visual Studio 2010. Oferă printre altele:
Versiunea 5 Limbajul utilizat pentru a programa programe asincrone pur și simplu prin adăugarea de cuvinte cheie asyncși await.
Comportamentul închiderilor în buclă foreacha fost modificat. Nu mai este necesar să introduceți o variabilă locală într-o buclă foreachpentru a evita problemele de închidere .
Rețineți, de asemenea, informațiile referitoare la apelant care permit cunoașterea numelui metodei care a apelat o proprietate.
A șasea versiune a C # face mai multe modificări, inclusiv:
Proprietățile implementate automat (sau proprietățile automate) au apărut pentru prima dată în C # 3, pentru a simplifica declararea proprietăților care încapsulează pur și simplu accesul la câmpuri. Deși fac codul mai concis, au un dezavantaj: nu este posibil să le inițializăm la nivelul declarației, trebuie să se facă neapărat în constructor. În plus, nu este posibil să facem proprietăți automate numai în citire, deoarece acestea nu au mutator (setter) și, prin urmare, nu le-am putea atribui o valoare.
C # 6 abordează această problemă permițând inițializarea proprietăților automate la nivel de declarație.
C # a fost standardizat de ECMA (ECMA-334) îndecembrie 2001și de ISO / IEC ( ISO / IEC 23270 ) în 2003 .
Modificările din versiunea 2.0 au fost standardizate de ECMA (ECMA-334) îniunie 2006și de ISO / IEC ( ISO / IEC 23270: 2006 ) înSeptembrie 2006.
Microsoft a deschis codul sursă pentru unele biblioteci utilizate de C # în octombrie 2007sub licența sursă de referință Microsoft (MS-RSL).
Standardul ECMA 334 și ISO 23270 definesc numele limbii ca caracterul Unicode 0043 (majuscule C) urmat de caracterul 0023 (#). Se pronunță „C ascuțit” și nu „H hash”, „ascuțit” desemnând într-adevăr simbolul muzical ♯ dar # fiind necesar pentru accesul ușor de pe o tastatură a computerului care oferă în schimb crucea („hash”).
Numele „C #” este inspirat de notația muzicală, unde o claritate indică faptul că nota scrisă ar trebui mărită cu un semiton. Acest lucru este similar cu numele limbajului C ++, unde „++” indică faptul că o variabilă ar trebui să fie incrementată cu 1 după evaluare. Simbolul # arată, de asemenea, ca o ligatură de patru simboluri "+" (într-o grilă două-la-două), ceea ce implică faptul că limbajul este un increment al C ++.