Introducere în C#
Limbajul C# și platforma .NET
În momentul de față, limbajul de programare C# este unul dintre cele mai puternice, în dezvoltare rapidă și foarte solicitate limbaje din industria IT.
În prezent, se scriu diverse aplicații pe el: de la programe desktop mici până la portaluri web și servicii web mari, care deservesc zilnic milioane de utilizatori.
C# nu mai este un limbaj tânăr și, la fel ca întreaga platformă .NET, a parcurs un drum lung. Prima versiune a limbajului a fost lansată odată cu Microsoft Visual Studio .NET în februarie 2002. Versiunea curentă a limbajului este C# 12, lansată pe 14 noiembrie 2023, împreună cu .NET 8.
C# este un limbaj cu sintaxă asemănătoare cu C și este similar din acest punct de vedere cu C++ și Java. Prin urmare, dacă sunteți familiarizați cu unul dintre aceste limbaje, va fi mai ușor să învățați C#.
C# este orientat pe obiecte și în acest sens a preluat multe de la Java și C++. De exemplu, C# suportă polimorfismul, moștenirea, supraîncărcarea operatorilor, tipizarea statică. Abordarea orientată pe obiecte permite rezolvarea problemelor legate de construirea aplicațiilor mari, dar în același timp flexibile, scalabile și extensibile. Și C# continuă să se dezvolte activ, și cu fiecare versiune nouă apar tot mai multe funcționalități interesante.
Rolul platformei .NET
Când se vorbește despre C#, se fac adesea referiri la tehnologiile platformei .NET (Windows Forms, WPF, ASP.NET, .NET MAUI). Și, invers, când se vorbește despre .NET, adesea se face referire la C#. Cu toate acestea, deși aceste concepte sunt legate, este incorect să le identificăm. Limbajul C# a fost creat special pentru a lucra cu framework-ul .NET, însă conceptul de .NET este ceva mai larg.
Bill Gates a spus odată că platforma .NET este cel mai bun lucru creat de Microsoft. Poate că avea dreptate. Framework-ul .NET reprezintă o platformă puternică pentru crearea aplicațiilor. Se pot evidenția următoarele caracteristici principale:
Suport pentru mai multe limbaje
Baza platformei este mediul de execuție comun Common Language Runtime (CLR), datorită căruia .NET suportă mai multe limbaje: pe lângă C# sunt și VB.NET, C++, F#, precum și diverse dialecte ale altor limbaje, legate de .NET, de exemplu, Delphi.NET. La compilare, codul în oricare dintre aceste limbaje este compilat într-un ansamblu pe limbajul comun CIL (Common Intermediate Language) - un fel de limbaj de asamblare al platformei .NET. Prin urmare, în anumite condiții, putem crea module separate ale unei aplicații în limbaje separate.
Cross-platform
.NET este o platformă portabilă (cu anumite limitări). De exemplu, ultima versiune a platformei la acest moment - .NET 8 este suportată pe majoritatea sistemelor de operare moderne Windows, MacOS, Linux. Folosind diverse tehnologii pe platforma .NET, putem dezvolta aplicații în limbajul C# pentru diverse platforme - Windows, MacOS, Linux, Android, iOS, Tizen.
Bibliotecă de clase puternică
.NET prezintă o bibliotecă de clase unică pentru toate limbajele suportate. Indiferent de ce aplicație intenționăm să scriem în C# - un editor de text, un chat sau un site web complex - vom utiliza biblioteca de clase .NET.
Diversitate de tehnologii
Mediul comun de execuție CLR și biblioteca de clase de bază constituie fundamentul pentru un întreg set de tehnologii pe care dezvoltatorii le pot folosi pentru a construi diverse aplicații. De exemplu, pentru lucrul cu bazele de date în acest set de tehnologii este destinată tehnologia ADO.NET și Entity Framework Core.
Pentru crearea aplicațiilor grafice cu interfață bogată - tehnologia WPF și WinUI, pentru crearea aplicațiilor grafice mai simple - Windows Forms. Pentru dezvoltarea aplicațiilor mobile și desktop cross-platform - Xamarin/MAUI. Pentru crearea site-urilor și aplicațiilor web - ASP.NET etc.
La acestea se adaugă Blazor, un framework care funcționează pe .NET și care permite crearea de aplicații web atât pe partea de server, cât și pe partea de client. Iar în viitor va suporta crearea de aplicații mobile și, probabil, aplicații desktop.
Performanță
Conform unui număr de teste, aplicațiile web pe .NET în anumite categorii depășesc semnificativ aplicațiile web construite cu alte tehnologii. Aplicațiile pe .NET, în principiu, se disting prin performanță ridicată.
De asemenea, trebuie menționată caracteristica limbajului C# și framework-ului .NET, cum ar fi colectarea automată a gunoiului. Asta înseamnă că, în majoritatea cazurilor, nu va trebui să ne preocupăm de eliberarea memoriei, spre deosebire de C++. Mediul comun de execuție CLR va apela colectorul de gunoi și va elibera memoria.
.NET Framework și .NET 8
Este de remarcat faptul că .NET s-a dezvoltat mult timp predominant ca platformă pentru Windows sub denumirea .NET Framework. În 2019 a fost lansată ultima versiune a acestei platforme - .NET Framework 4.8. Nu mai este dezvoltată.
Din 2014, Microsoft a început să dezvolte o platformă alternativă - .NET Core, destinată deja pentru diverse platforme și care trebuia să încorporeze toate funcționalitățile .NET Framework și să adauge funcționalități noi. Ulterior, Microsoft a lansat succesiv mai multe versiuni ale acestei platforme: .NET Core 1, .NET Core 2, .NET Core 3, .NET 5.
Iar versiunea curentă (2025) este .NET 8. De aceea, trebuie să facem distincție între .NET Framework, destinat în principal pentru Windows, și .NET 8, cross-platform. În acest ghid vom vorbi despre C# 12 în combinație cu .NET 8, deoarece aceasta este platforma actuală.
Cod gestionat și neadministrat
Adesea, aplicațiile create în C# sunt numite cod gestionat (managed code). Ce înseamnă asta? Înseamnă că aplicația respectivă este creată pe baza platformei .NET și este gestionată de mediul comun de execuție CLR, care încarcă aplicația și, dacă este necesar, curăță memoria.
Dar există și aplicații, de exemplu, create în C++, care sunt compilate nu în limbajul comun CIL, ca C#, VB.NET sau F#, ci în cod mașină obișnuit. În acest caz, .NET nu gestionează aplicația.
Totuși, platforma .NET oferă posibilități de interacțiune cu codul neadministrat.
JIT-compilare
Așa cum s-a menționat mai sus, codul în C# este compilat în aplicații sau ansambluri cu extensiile exe sau dll în limbajul CIL. Apoi, la rularea unei astfel de aplicații, se efectuează JIT-compilarea (Just-In-Time) în cod mașină, care apoi este executat.
În acest caz, deoarece aplicația noastră poate fi mare și poate conține o mulțime de instrucțiuni, în momentul actual se va compila doar acea parte a aplicației la care se face referire directă. Dacă ne referim la o altă parte a codului, aceasta va fi compilată din CIL în cod mașină.
În același timp, partea deja compilată a aplicației este păstrată până la finalizarea programului. În final, aceasta crește performanța.
În esență, acestea sunt lucrurile pe care trebuie să le cunoașteți pe scurt despre platforma .NET și limbajul C#. Acum să creăm prima aplicație.