Paweł Łukasiewicz: programista blogger
Paweł Łukasiewicz
2026-04-01
Paweł Łukasiewicz: programista blogger
Paweł Łukasiewicz
2026-04-01
Udostępnij Udostępnij Kontakt
Witamy w nowoczesnym świecie C#!

Jeśli ostatni raz programowałeś w C# w 2015 roku, przygotuj się na szok. C# przeszedł rewolucję. To już nie ten sam język. Jeśli dopiero zaczynasz swoją przygodę z programowaniem – masz szczęście! Uczysz się najnowocześniejszej wersji języka, który dominuje w enterprise, cloud, grach (Unity), mobile (MAUI), web (ASP.NET Core) i AI (ML.NET).

🔍 Dlaczego C# w 2026 roku?

C# to nie tylko język do aplikacji desktopowych! W 2026 roku C# jest wszędzie:

  • Web – ASP.NET Core (jeden z najszybszych frameworków webowych!)
  • Cloud – Azure Functions, mikroservisy, serverless
  • Mobile – .NET MAUI (Android, iOS, Windows, Mac z jednego kodu!)
  • Games – Unity (najpopularniejszy silnik gier używa C#)
  • Desktop – WPF, WinForms, Avalonia
  • AI/ML – ML.NET, integracja z Azure AI
  • IoT – .NET nanoFramework dla mikrokontrolerów

Bonus: C# jest jednym z najlepiej płatnych języków programowania! 💰

Ten wpis to początek Twojej podróży. Nauczysz się wszystkiego od podstaw, ale w nowoczesny sposób. Zapomnij o starych wzorcach z 2015 roku. Pokażę Ci jak programuje się w C# w 2026 roku.

Co się zmieniło od 2015 roku?
📅 Podróż przez czas: C# 6.0 (2015) → C# 14 (2026)

W 2015 roku mieliśmy C# 6.0 i .NET Framework 4.6. Dziś mamy C# 14 i .NET 10. To 8 głównych wersji języka!

Najważniejsze zmiany

Wersja C# Rok Kluczowe nowości
C# 6.0 2015 String interpolation, null-conditional operator
C# 7.0-7.3 2017 Tuples, pattern matching, local functions
C# 8.0 2019 Nullable reference types, switch expressions
C# 9.0 2020 Records, top-level statements, init properties
C# 10 2021 Global usings, file-scoped namespaces
C# 11 2022 Raw string literals, list patterns, required members
C# 12 2023 Primary constructors, collection expressions
C# 13 2024 Partial properties, params collections
C# 14 2025/2026 Extension members, field keyword, implicit span, null-conditional assignment
💡 C# 14 - Co nowego?

Najważniejsze features z C# 14 które będziemy używać w tym kursie:

  • field keyword – dostęp do backing field w auto-properties (koniec z private string _name;!)
  • Extension members – extension properties i operators (nie tylko metody!)
  • Implicit span conversions – automatyczna konwersja do Span<T>
  • Null-conditional assignmentobj?.Property = value;
  • User-defined compound operators – własne operatory +=, -=
  • Partial constructors/events – więcej elastyczności z partial
  • Lambda parameter modifiersref, in, out w lambdach

Wszystkie te features poznasz w kolejnych wpisach! 🚀

🔍 Nie panikuj!

Widzisz te wszystkie wersje i myślisz "niemożliwe do nauczenia się"? Spokojnie!

Większość z tych funkcji to usprawnienia składni – pozwalają pisać ten sam kod krócej i czytelniej. Nie musisz znać wszystkiego od razu. W tym kursie nauczysz się wszystkiego krok po kroku, w naturalny sposób.

Nasza strategia: Zawsze pokażę Ci nowoczesny sposób (C# 14), ale wyjaśnię też jak to działało wcześniej, żebyś rozumiał ewolucję języka. 🎯

.NET Framework vs .NET Core vs .NET

Krótka historia .NET

🔍 Co to jest .NET?

.NET to platforma (framework), na której działają programy napisane w C#. Myśl o tym jak o silniku samochodu – C# to kierownica i pedały (język), a .NET to silnik (platforma wykonawcza).

.NET zawiera:

  • Runtime – środowisko uruchomieniowe (CLR - Common Language Runtime)
  • Biblioteki – tysiące gotowych klas do różnych zadań
  • Kompilator – tłumaczy Twój kod C# na kod maszynowy
  • Narzędzia – CLI, debugger, profiler
📅 Ewolucja .NET:
  • 2002-2019: .NET Framework – oryginalny .NET, tylko Windows, ciężki, monolityczny
  • 2016-2020: .NET Core – nowy .NET, cross-platform (Windows, Linux, Mac), szybki, modularny
  • 2020-teraz: .NET – unifikacja! Jeden .NET dla wszystkiego. Uproszczono nazwę: .NET 5, 6, 7, 8, 9, 10...
⚠️ WAŻNE dla osób z doświadczeniem z 2015 roku:

Jeśli znasz .NET Framework 4.xzapomnij o nim! W 2026 roku używamy .NET 10 (lub nowszego).

.NET Framework jest dead (ostatnia wersja to 4.8 z 2019). Microsoft nie rozwija go dalej. Wszystko nowe dzieje się w .NET (bez "Framework" w nazwie).

Dobra wiadomość? .NET 10 jest szybszy, lżejszy i lepszy we wszystkim!

Cecha .NET Framework
stary (2015)
.NET 10
nowy (2026)
Platformy ❌ Tylko Windows ✅ Windows, Linux, macOS
Wydajność 🐌 Średnia 🚀 Świetna (10x szybszy w wielu scenariuszach!)
Rozmiar ❌ ~500 MB instalacji ✅ ~150 MB SDK, self-contained apps możliwe
Wersjonowanie ❌ Jedna wersja na systemie ✅ Side-by-side (wiele wersji równolegle)
Open Source ❌ Closed source ✅ Open source (GitHub!)
Cloud-ready ❌ Nie bardzo ✅ Zaprojektowany dla cloud (Docker, Kubernetes)
Rozwój ❌ Zakończony (2019) ✅ Nowe wersje co rok!
Instalacja .NET 10 SDK

Co potrzebujesz?

🔍 SDK vs Runtime – jaka różnica?

.NET Runtime – tylko do uruchamiania aplikacji (jak odtwarzacz MP3 dla muzyki)

.NET SDK – do tworzenia aplikacji (Runtime + kompilator + narzędzia deweloperskie)

Jako programista potrzebujesz SDK! Runtime jest wbudowany w SDK.

Krok 1: Pobierz .NET 10 SDK

Idź na: https://dotnet.microsoft.com/download

Wybierz .NET 10 SDK (najnowsza wersja) dla Twojego systemu operacyjnego (Windows, macOS, Linux).

⚠️ Uwaga: Upewnij się że pobierasz SDK, nie Runtime!

Krok 2: Zainstaluj SDK

Uruchom instalator i postępuj zgodnie z instrukcjami. Instalacja zajmie kilka minut.

Krok 3: Sprawdź instalację

Otwórz terminal (Command Prompt na Windows, Terminal na Mac/Linux) i wpisz:

dotnet --version

Powinieneś zobaczyć numer wersji, np.:

10.0.0

Jeśli widzisz numer wersji – gratulacje! ✅ Masz zainstalowane .NET 10 SDK!

💡 Wskazówka:

Możesz mieć zainstalowanych wiele wersji .NET równocześnie. Sprawdź wszystkie zainstalowane wersje:

dotnet --list-sdks

Każdy projekt może używać innej wersji .NET! To jest mega wygodne. 🎯

Wybór edytora kodu

Visual Studio 2026 - Profesjonalne IDE

W tym kursie będziemy używać Visual Studio 2026 - najnowszego, najpotężniejszego IDE dla C# na świecie. Visual Studio 2026 został wydany w grudniu 2025 i jest zaprojektowane specjalnie dla .NET 10 i C# 14.

🎯 Dlaczego Visual Studio 2026?
  • AI-native IDE – wbudowany GitHub Copilot, inteligentne sugestie
  • Najszybsze w historii – 30% szybsze uruchamianie vs VS 2022
  • .NET 10 i C# 14 – pełne wsparcie od dnia pierwszego
  • Nowoczesny Fluent UI – 11 nowych motywów kolorystycznych
  • Side-by-side – instaluje się obok VS 2022 bez konfliktów
  • Visual designers – dla WPF, WinForms, XAML
  • Najlepszy debugger – nie ma lepszego debuggera dla C#
  • Community Edition DARMOWA – pełna wersja za $0!
⚠️ Visual Studio vs Visual Studio Code - ważne!

To są DWIE RÓŻNE aplikacje:

  • Visual Studio 2026 – pełne IDE dla C# (używamy tego w kursie!)
  • Visual Studio Code – lekki edytor tekstu (świetny do frontendu, JS)

W tym kursie o C# używamy Visual Studio 2026 (pełne IDE), NIE VS Code!

Alternatywy (opcjonalne)

IDE Zalety Wady
JetBrains Rider ✅ Cross-platform (Windows, Mac, Linux)
✅ Najlepsze refactoring
✅ Świetny dla Unity
❌ Płatne ($149/rok)
❌ Brak visual designerów
Visual Studio Code ✅ Darmowe
✅ Cross-platform
✅ Lekkie
❌ Brak visual designerów
❌ Słabszy debugger
❌ Wymaga konfiguracji

Instalacja Visual Studio 2026

1. Pobierz Visual Studio 2026 Community:

Idź na: https://visualstudio.microsoft.com/downloads/

Kliknij "Free download" pod Visual Studio 2026 Community

🔍 Community vs Professional vs Enterprise
  • Community – DARMOWA, pełna funkcjonalność (dla nas!)
  • Professional – płatna, dodatkowe narzędzia enterprise
  • Enterprise – najdroższa, dla dużych korporacji

Community ma WSZYSTKO czego potrzebujesz do nauki i pracy!

2. Uruchom instalator

Po pobraniu, uruchom plik VisualStudioSetup.exe

3. Wybierz workloads (pakiety funkcji)

W instalatorze zaznacz:

  • .NET desktop development – aplikacje desktopowe (WPF, WinForms)
  • ASP.NET and web development – aplikacje webowe (opcjonalne na start)
⚠️ Instalacja zajmuje miejsce!

Visual Studio 2026 z podstawowymi workloadami to około 10-15 GB. Upewnij się że masz wystarczająco miejsca na dysku!

4. Poczekaj na instalację

Instalacja zajmie 15-30 minut w zależności od Twojego łącza internetowego.

5. Uruchom Visual Studio 2026

Po instalacji uruchom Visual Studio. Przy pierwszym uruchomieniu:

  • Wybierz motyw kolorystyczny (polecam Dark lub Blue)
  • Zaloguj się kontem Microsoft (opcjonalne, ale polecane)
  • Pomiń konfigurację GitHub na razie
Twój pierwszy program w C# 14!

Hello World w Visual Studio 2026

Tradycyjnie, zaczniemy od "Hello World". Ale w C# 14 wygląda to ZUPEŁNIE inaczej niż w 2015 roku!

Krok 1: Utwórz nowy projekt

Uruchom Visual Studio 2026 i:

  1. Kliknij "Create a new project"
  2. W wyszukiwarce wpisz "console"
  3. Wybierz "Console App" (ikona C#, nie C++ ani F#!)
  4. Kliknij "Next"
  5. Nazwij projekt: "MojPierwszyProgram"
  6. Wybierz lokalizację (np. C:\Projects\)
  7. Kliknij "Next"
  8. WAŻNE! Framework: wybierz ".NET 10.0"
  9. Kliknij "Create"
💡 Co się stało?

Visual Studio utworzył dla Ciebie:

  • MojPierwszyProgram.csproj – plik projektu
  • Program.cs – główny plik z kodem
  • Folder bin/ – skompilowane pliki (pojawi się po uruchomieniu)
  • Folder obj/ – pliki tymczasowe kompilatora

Krok 2: Zobacz kod!

Visual Studio automatycznie otworzy plik Program.cs. Zobaczysz:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
🤯 WAIT, CO?! Gdzie reszta kodu?

To jest cały program! Jedna linijka!

W C# 14 (i od C# 9+) mamy top-level statements – możesz pisać kod bezpośrednio, bez całego boilerplate'u!

2015 vs 2026 – Porównanie

❌ C# 6.0 (2015) – 11 linii kodu
using System;

namespace MojPierwszyProgram
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}
✅ C# 14 (2026) – 1 linia kodu
Console.WriteLine("Hello, World!");

To jest DOKŁADNIE ten sam program! Kompilator automatycznie dodaje:

  • Namespace
  • Klasę Program
  • Metodę Main
  • Używane using statements (dzięki ImplicitUsings)
🔍 Jak to działa?

Top-level statements to syntactic sugar (lukier składniowy). Kompilator C# NADAL generuje pełną klasę i metodę Main, ale robi to automatycznie!

Możesz myśleć o tym jak o skrócie klawiszowym – piszesz mniej, ale działa identycznie.

Kiedy używać top-level statements?

  • ✅ Małe programy, skrypty
  • ✅ Nauka programowania (mniej boilerplate'u!)
  • ✅ Szybkie prototypy
  • ❌ Duże aplikacje z wieloma plikami (lepiej tradycyjna struktura)

Krok 3: Uruchom program

Masz kilka opcji:

  • Naciśnij F5 (uruchom z debuggerem)
  • Naciśnij Ctrl+F5 (uruchom bez debuggera)
  • Kliknij zieloną strzałkę ▶ na górze (obok "MojPierwszyProgram")

Pojawi się okno konsoli z napisem:

Hello, World!

🎉 Gratulacje! Właśnie napisałeś i uruchomiłeś swój pierwszy program w C# 14 i Visual Studio 2026!

💡 F5 vs Ctrl+F5 - jaka różnica?
  • F5 – uruchamia z debuggerem (możesz stawiać breakpointy, zatrzymywać program)
  • Ctrl+F5 – uruchamia bez debuggera (szybsze, okno konsoli nie znika automatycznie)

Na razie używaj Ctrl+F5 – jest prostsze! 👍

Bonus: Używanie terminala (dla ciekawskich)

Visual Studio ma wbudowany terminal! Możesz też używać dotnet CLI bezpośrednio:

  1. W Visual Studio kliknij View → Terminal (lub Ctrl+`)
  2. Wpisz: dotnet run

Program uruchomi się w terminalu! To ten sam sposób co używanie Visual Studio, tylko przez linię komend.

# W terminalu
dotnet run

# Output:
Hello, World!
🔍 Visual Studio vs dotnet CLI

Visual Studio – GUI, klikanie przycisków (łatwiejsze na start!)

dotnet CLI – linia komend, ręczne wpisywanie (dla zaawansowanych, automatyzacji)

Oba robią TO SAMO pod spodem! Visual Studio wywołuje dotnet CLI w tle. Używaj czego wolisz! 😊

Struktura projektu .NET

Co znajduje się w folderze projektu?

Sprawdźmy co utworzył dotnet CLI:

MojPierwszyProgram/
├── Program.cs              ← Twój kod
├── MojPierwszyProgram.csproj  ← Konfiguracja projektu
├── bin/                    ← Skompilowane pliki (ignorowane w git)
└── obj/                    ← Pliki tymczasowe (ignorowane w git)

Program.cs

To główny plik Twojego programu. Tutaj piszesz kod C#.

MojPierwszyProgram.csproj

Plik projektu. Otwórz go i zobacz:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>
🔍 Co oznaczają te ustawienia?
  • OutputTypeExe – tworzymy aplikację wykonywalną (.exe)
  • TargetFrameworknet10.0 – używamy .NET 10
  • ImplicitUsingsenable – automatyczne "using System;" i inne
  • Nullableenable – włączona ochrona przed null (MEGA WAŻNE! 🔥)
⚠️ ImplicitUsings – co to?

W starym C# (2015) musiałeś na początku każdego pliku pisać:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
// ... i więcej

W C# 10+ z ImplicitUsings kompilator automatycznie dodaje najczęściej używane usings! Nie musisz ich pisać. ✅

Możesz nadal dodawać własne usings gdy potrzebujesz:

using System.Net.Http; // dla HttpClient

Console.WriteLine("Hello!");
Podstawy składni C# – pisanie kodu

Wypisywanie tekstu na ekran

Zmień kod w Program.cs:

Console.WriteLine("Witaj w świecie C#!");
Console.WriteLine("To jest mój pierwszy program.");
Console.Write("To nie przechodzi do nowej linii. ");
Console.Write("Widzisz?\n");

Uruchom (dotnet run). Zobaczysz:

Witaj w świecie C#!
To jest mój pierwszy program.
To nie przechodzi do nowej linii. Widzisz?
🔍 WriteLine vs Write
  • Console.WriteLine() – wypisuje tekst i przechodzi do nowej linii
  • Console.Write() – wypisuje tekst bez nowej linii
  • \n – znak nowej linii (można użyć ręcznie)

Komentarze

// To jest komentarz jednoliniowy
// Kompilator go ignoruje

/* 
   To jest komentarz wieloliniowy.
   Może mieć wiele linii.
*/

Console.WriteLine("Hello!"); // Komentarz może być na końcu linii

/// <summary>
/// To jest komentarz XML dokumentacji.
/// Używany do dokumentowania kodu.
/// </summary>
💡 Kiedy używać komentarzy?

Dobry komentarz wyjaśnia DLACZEGO, nie CO:

// ❌ Źle – komentarz mówi co kod robi (to widać!)
int x = 5; // Przypisz 5 do x

// ✅ Dobrze – komentarz wyjaśnia DLACZEGO
int maxRetries = 5; // API czasem failuje, retry 5x zanim zgłosimy błąd

Złota zasada: Piszesz kod tak czytelnie, że nie potrzebuje komentarzy. Komentarze tylko dla nietypowych sytuacji. 🎯

Średniki i białe znaki

// ✅ Każda instrukcja kończy się średnikiem
Console.WriteLine("Hello");
Console.WriteLine("World");

// ✅ Białe znaki (spacje, taby, nowe linie) są ignorowane
Console.WriteLine("Hello");
Console.WriteLine(    "World"    );
Console.
    WriteLine
        (
            "Działa!"
        );

// ❌ Brak średnika = błąd kompilacji
Console.WriteLine("Błąd!")  // ERROR: ; expected

Case sensitivity (wielkość liter ma znaczenie!)

Console.WriteLine("Hello");  // ✅ Poprawnie
console.WriteLine("Hello");  // ❌ BŁĄD! 'console' nie istnieje (małe 'c')

// C# rozróżnia wielkość liter!
int liczba = 5;
int Liczba = 10;  // To są DWA RÓŻNE zmienne!
Prosty program interaktywny

Wczytywanie danych od użytkownika

Console.Write("Jak masz na imię? ");
string imie = Console.ReadLine();

Console.WriteLine($"Cześć, {imie}!");

Uruchom program:

Jak masz na imię? Paweł
Cześć, Paweł!
🔍 Co się dzieje w tym kodzie?
  • Console.ReadLine() – czeka aż użytkownik wpisze tekst i naciśnie Enter
  • string imie – tworzymy zmienną typu string (tekst) o nazwie "imie"
  • $"Cześć, {imie}!"string interpolation (interpolacja stringów)

String interpolation to MEGA przydatna funkcja! $"..." pozwala wstawiać zmienne bezpośrednio w tekście używając {}.

❌ Stary sposób (2015)
string imie = Console.ReadLine();
Console.WriteLine("Cześć, " + imie + "!");
// Łączenie stringów z +
✅ Nowoczesny sposób (2026)
string imie = Console.ReadLine();
Console.WriteLine($"Cześć, {imie}!");
// String interpolation

Pełny przykład – kalkulator wieku

Console.Write("Podaj swoje imię: ");
string imie = Console.ReadLine();

Console.Write("Podaj swój rok urodzenia: ");
string rokTekst = Console.ReadLine();
int rokUrodzenia = int.Parse(rokTekst);

int obecnyRok = 2026;
int wiek = obecnyRok - rokUrodzenia;

Console.WriteLine($"Cześć {imie}! Masz około {wiek} lat.");

Przykład działania:

Podaj swoje imię: Anna
Podaj swój rok urodzenia: 1995
Cześć Anna! Masz około 31 lat.
🔍 Nowe rzeczy w tym kodzie:
  • int.Parse() – konwertuje string na liczbę całkowitą (int)
  • int wiek = ... – obliczenia matematyczne
  • Wiele zmiennych używanych razem
⚠️ Co jeśli użytkownik wpisze coś złego?

Jeśli użytkownik wpisze "abc" zamiast roku, program się wysypie:

Unhandled exception. System.FormatException: Input string was not in a correct format.

To jest normalne! Nauczymy się obsługi błędów w późniejszych wpisach (try/catch). Na razie zakładamy że użytkownik wpisuje poprawne dane. 👍

Podsumowanie

Gratuluję! To był intensywny, ale ważny wpis. Nauczyłeś się:

  • Historia C# – ewolucja od C# 6.0 (2015) do C# 14 (2026)
  • .NET Framework vs .NET – dlaczego porzuciliśmy stary .NET
  • Instalacja .NET 10 SDK – dotnet CLI, sprawdzanie wersji
  • Wybór edytora – VS Code, Visual Studio 2022, Rider
  • Top-level statements – nowoczesny sposób pisania programów (1 linia zamiast 11!)
  • Struktura projektu – .csproj, ImplicitUsings, Nullable
  • Podstawy składni – WriteLine, Write, komentarze, średniki
  • Console I/O – ReadLine, wypisywanie, wczytywanie
  • String interpolation – $"Hello {name}!" zamiast konkatenacji
  • Pierwszy program interaktywny – kalkulator wieku

W kolejnym wpisie zagłębimy się w typy danych w nowoczesnym C# – nullable reference types, init-only properties, required members i target-typed new expressions!

Zadanie dla Ciebie 🎯

Stwórz prosty program który:

  1. Pyta użytkownika o imię
  2. Pyta o ulubiony kolor
  3. Pyta o ulubioną liczbę
  4. Wypisuje podsumowanie w formacie:
    "Cześć [imię]! Twój ulubiony kolor to [kolor] a ulubiona liczba to [liczba]."
🎯 BONUS: Mini-projekt – Wizytówka osobista

Stwórz program który wyświetla Twoją "wizytówkę" w konsoli:

╔════════════════════════════════╗
║  PAWEŁ ŁUKASIEWICZ             ║
║  C# Developer                  ║
║  📧 pawel@example.com          ║
║  🌐 www.plukasiewicz.net       ║
╚════════════════════════════════╝

Wskazówki:

  • Użyj Console.WriteLine() dla każdej linii
  • Możesz użyć znaków Unicode dla ramki: ╔ ║ ═ ╗ ╚ ╝
  • Spróbuj zrobić to czytelnie używając string interpolation
  • (Zaawansowane) Spróbuj wycentrować tekst!

To świetne ćwiczenie aby poczuć jak działa Console output! 🚀