Menu

Czym jest C#? Język, .NET, wersje i pierwszy program

C# to statycznie typowany język ogólnego przeznaczenia od Microsoftu, który działa na .NET. Do czego służy, jak ma się do .NET, co dodała każda wersja i jak zbudowany jest program w C#.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

C# (wymawiane "si szarp") to język programowania ogólnego przeznaczenia zaprojektowany w Microsofcie przez zespół kierowany przez Andersa Hejlsberga i wydany po raz pierwszy w 2002 roku. Jest statycznie typowany (każda zmienna ma typ, który kompilator sprawdza przed uruchomieniem programu), obiektowy (kod jest zorganizowany w klasy) i zarządzany (odśmiecacz zwalnia pamięć za ciebie). Współczesny C# sporo czerpie też z programowania funkcyjnego: lambdy, zapytania LINQ, dopasowywanie wzorców i niemutowalne rekordy.

Oto kompletny program w C#. Kliknij Uruchom:

Wynik:

Hello, Ada! It is 2026.

Do czego służy C#

C# to język ogólnego przeznaczenia, więc spotyka się go w większości rodzajów oprogramowania, ale kilka obszarów stanowi jego największą część:

  • Gry. Unity, jeden z najpopularniejszych silników gier, używa C# jako języka skryptowego. Obsługuje go też Godot.
  • Backendy webowe. ASP.NET Core to framework webowy .NET do API, stron i aplikacji czasu rzeczywistego. W publicznych benchmarkach należy do najszybszych popularnych frameworków webowych.
  • Aplikacje desktopowe. WPF i Windows Forms w Windows, .NET MAUI i Avalonia na wielu platformach.
  • Chmura i usługi. Azure Functions, procesy działające w tle, mikrousługi w kontenerach.
  • Narzędzia i automatyzacja. Narzędzia wiersza poleceń, skrypty budowania, przetwarzanie danych.

Jest szczególnie popularny w dużych firmach opartych na technologiach Microsoftu i w studiach gier. Aplikacje mobilne da się pisać w .NET MAUI (następcy Xamarina), ale to mniejsza nisza niż Kotlin czy Swift.

C# i .NET to nie to samo

C# to język. .NET to platforma, która go uruchamia, i składa się z trzech części:

  1. Środowisko uruchomieniowe (CLR). Kompilator C# nie tworzy kodu maszynowego. Tworzy język pośredni (IL), zapisywany w plikach .dll lub .exe. Gdy program działa, Common Language Runtime kompiluje ten IL do kodu natywnego w locie (JIT), zarządza pamięcią przez odśmiecacz i pilnuje bezpieczeństwa typów.
  2. Biblioteka klas bazowych. Kolekcje, dostęp do plików, sieć, tekst, daty, wątki: wszystko pod System.*.
  3. SDK. Polecenie dotnet, które tworzy, buduje, testuje i uruchamia projekty.

Do tego samego IL kompilują się inne języki (F#, Visual Basic), dlatego program w C# może korzystać z biblioteki napisanej w F#.

Platforma ma dwie generacje. .NET Framework (od 1.0 w 2002 do 4.8.1) działa tylko w Windows i nadal uruchamia wiele starszych aplikacji. .NET (do wersji 5 nazywany .NET Core) to otwartoźródłowy, wieloplatformowy następca, który działa w Windows, Linuksie i macOS. Nowe projekty celują w .NET; wydania o parzystych numerach, takie jak .NET 8 i .NET 10, dostają trzy lata wsparcia długoterminowego.

Jak zbudowany jest program w C#

Program w C# składa się z typów (klas, struktur, interfejsów, enumów, rekordów), które zawierają składniki (pola, właściwości, metody). Wykonanie zaczyna się w statycznej metodzie o nazwie Main. Przestrzenie nazw grupują powiązane typy, a dyrektywy using pozwalają odwoływać się do nich krótkimi nazwami.

Wynik:

Maya: 21.00
Leo: 13.00

Kilka rzeczy już widać: Order to klasa z dwiema właściwościami (Customer, Total), konstruktorem i metodą. decimal to typ do kwot pieniężnych, a przyrostek m oznacza literał dziesiętny. var pozwala kompilatorowi wywnioskować typ zmiennej lokalnej, a List<Order> to generyczna kolekcja, która przyjmuje tylko obiekty Order. {order.Total:F2} wewnątrz $"..." formatuje liczbę z dwoma miejscami po przecinku.

W prawdziwym projekcie każda klasa zwykle ma własny plik, a pliki są kompilowane razem do jednego zestawu (assembly). Szczegóły znajdziesz na stronie klasy i obiekty.

Statyczne typowanie w praktyce

Kompilator zna typ każdego wyrażenia, więc duża klasa błędów nigdy nie trafia do działającego programu. Przypisanie stringa do int, wywołanie nieistniejącej metody albo przekazanie argumentów w złej kolejności kończy się niepowodzeniem w czasie kompilacji, z błędem wskazującym linię.

Wynik:

29.97
45

Typy napędzają też edytor: autouzupełnianie, zmiana nazw i "znajdź wszystkie odwołania" są w C# dokładne, bo narzędzia czytają te same informacje o typach co kompilator.

Wersje C# i co dodały

Od C# 9 w 2020 roku nowa wersja ukazuje się każdego listopada razem z nowym wydaniem .NET; wcześniej wersje pojawiały się co dwa, trzy lata. Każda wersja jest projektowana tak, żeby istniejący kod nadal się kompilował, a rzadkie wyjątki (jak field, które w C# 14 stało się słowem kluczowym wewnątrz akcesorów właściwości) są dokumentowane jako zmiany niekompatybilne, więc program napisany dla C# 2 prawie zawsze kompiluje się dziś bez zmian.

WersjaRokNajważniejsze nowości
C# 22005Typy generyczne, typy wartościowe dopuszczające null (int?), iteratory (yield)
C# 32007LINQ, wyrażenia lambda, var, inicjalizatory obiektów, metody rozszerzające
C# 42010dynamic, parametry opcjonalne i nazwane
C# 52012async i await
C# 62015Interpolacja stringów $"...", nameof, operator warunkowy null ?.
C# 72017Krotki, out var, dopasowywanie wzorców z is, separatory cyfr
C# 82019Typy referencyjne dopuszczające null, wyrażenia switch, zakresy s[1..4], ??=, strumienie asynchroniczne
C# 92020Rekordy, akcesory init, instrukcje najwyższego poziomu, new() z typem docelowym
C# 102021Globalne dyrektywy using, przestrzenie nazw o zakresie pliku, struktury rekordowe
C# 112022Surowe literały stringów """, składniki required, wzorce list
C# 122023Konstruktory podstawowe dla klas, wyrażenia kolekcji [1, 2, 3]
C# 132024Kolekcje params, typ System.Threading.Lock
C# 142025Składniki rozszerzające, słowo kluczowe field we właściwościach

Nowsze wersje głównie usuwają zbędny ceremoniał. Ten program dla C# 9 i nowszych używa instrukcji najwyższego poziomu (bez class Program, bez Main), rekordu i wyrażenia switch:

// C# 9 and later, in a .NET 6+ project (implicit usings import System)
var order = new Order("Maya", 21.00m);
Console.WriteLine(Shipping(order));

static string Shipping(Order o) => o.Total switch
{
    >= 50m => "free shipping",
    >= 20m => "standard shipping",
    _ => "shipping fee applies"
};

record Order(string Customer, decimal Total);

Ta sama logika w starszym, jawnym stylu, który kompiluje się w C# 6 i każdej późniejszej wersji:

Wynik:

standard shipping

Obie formy to poprawny C#. Starszy, jawny styl spotkasz w istniejącym kodzie, tutorialach i projektach Unity, a krótszy w nowych projektach .NET.

LINQ: zapytania o dane wbudowane w język

LINQ (Language Integrated Query, C# 3) to jedna z funkcji, które ludzie wymieniają, tłumacząc, dlaczego lubią C#. Pozwala filtrować, sortować, grupować i przekształcać dowolną kolekcję łańcuchem metod:

Wynik:

95, 91, 88, 72
Average: 78.0
Best: 95

Ta sama składnia działa na listach w pamięci, na tabelach bazy danych przez Entity Framework i na XML. Więcej na stronie o LINQ.

Czy C# to dobry pierwszy język?

C# wymaga na starcie więcej niż Python: deklarujesz typy, kończysz instrukcje średnikami i umieszczasz kod w klasach. W zamian kompilator wcześnie wyłapuje błędy, narzędzia (Visual Studio, VS Code, Rider) są świetne, a pojęcia przenoszą się wprost do Javy, TypeScriptu, Kotlina i C++. Jeśli chcesz tworzyć gry w Unity albo pracować w firmie opartej na .NET, to oczywisty wybór. Jeśli twoim celem jest analiza danych albo uczenie maszynowe, Python ma większy ekosystem.

Na początek zainstaluj .NET SDK i uruchom dotnet new console albo zacznij od Hello World i uruchamiaj przykłady bezpośrednio na tych stronach.

Najczęściej zadawane pytania

Czym jest C#?

C# (wymawiane "si szarp") to statycznie typowany, obiektowy język programowania ogólnego przeznaczenia, stworzony w Microsofcie i wydany po raz pierwszy w 2002 roku. Jego kod źródłowy kompiluje się do języka pośredniego, który środowisko uruchomieniowe .NET zamienia na kod maszynowy, a pamięcią zarządza odśmiecacz. Używa się go do backendów webowych, gier w Unity, aplikacji desktopowych, usług chmurowych i narzędzi.

Czy C# to to samo co .NET?

Nie. C# to język; .NET to platforma, na której działa: środowisko uruchomieniowe (CLR), biblioteka klas bazowych (System.Collections.Generic, System.IO i tak dalej) oraz narzędzia SDK. Na .NET działają też F# i Visual Basic, a wersja C# zwykle ukazuje się razem z wersją .NET (na przykład C# 12 z .NET 8).

Do czego służy C#?

Do web API i stron w ASP.NET Core, gier w Unity (jego językiem skryptowym jest C#), aplikacji desktopowych dla Windows w WPF i WinForms, aplikacji wieloplatformowych w .NET MAUI, usług chmurowych i Azure Functions oraz narzędzi wiersza poleceń. Jest popularny w oprogramowaniu dla przedsiębiorstw i w studiach gier.

Czy C# jest trudny do nauki?

Jako pierwszy język jest średnio trudny. Składnia jest w stylu C i bardziej rygorystyczna niż w Pythonie, bo każda zmienna ma typ sprawdzany przez kompilator, ale pamięcią zarządza się za ciebie, a komunikaty o błędach są jasne. Większość początkujących po kilku tygodniach praktyki potrafi pisać przydatne programy konsolowe.

Czy nadal warto uczyć się C#?

Tak. C# regularnie należy do najczęściej używanych języków w ankietach programistów, .NET jest otwartoźródłowy i wieloplatformowy, a język dostaje nową wersję każdego listopada. To praktyczny wybór, jeśli chcesz tworzyć gry w Unity albo pracować w firmach opartych na technologiach Microsoftu.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ