C Sharp

C#
Logo języka C#
Logo języka
Pojawienie się

lipiec 2000

Paradygmat

wieloparadygmatowy

Implementacje

C#

Aktualna wersja stabilna

14.0 (11 listopada 2025; około 11 miesięcy temu)

Twórca

Anders Hejlsberg

Platforma sprzętowa

wieloplatformowy

Platforma systemowa

Microsoft Windows: .NET Framework
wieloplatformowy: .NET Core, ASP.NET, Unity, Xamarin, Blazor, Mono, DotGNU

Strona internetowa

C# (C Sharp; wym. [siːˈʃɑːp]; dosłownie „cis”, „c z kratką”) – wieloparadygmatowy język programowania zaprojektowany w latach 1998–2001 przez zespół pod kierunkiem Andersa Hejlsberga dla firmy Microsoft.

Program napisany w tym języku kompilowany jest do języka Common Intermediate Language (CIL), specjalnego kodu pośredniego wykonywanego w środowisku uruchomieniowym takim jak .NET Framework, .NET Core, Mono lub DotGNU. Wykonanie skompilowanego programu przez system operacyjny wymaga zainstalowanego środowiska uruchomieniowego lub zawarcia go w dystrybuowanej aplikacji (tzw. aplikacja typu self-contained). Począwszy od wersji środowiska .NET 7, aplikacje mogą być także kompilowane w wersji natywnej dla wybranej platformy.

Nazwa

Nazwa języka powstała analogicznie jak nazwa C++. Operator ++ w języku C (w C++ też) oznacza zwiększenie o jeden, więc C++ to więcej niż C. Autorzy C# wykorzystali podobny pomysł, gdzie symbol krzyżyka/kratki przypomina cztery połączone ze sobą operatory +. W muzyce dźwięk C♯ jest wyższy niż dźwięk C, może to sugerować, że język jest rozwinięciem C/C++.

Symbol ♯ (krzyżyk) jest niedostępny na większości klawiatur, niektórych czcionkach i przeglądarkach internetowych, dlatego zalecane jest używanie symbolu kratki (#), który bardzo przypomina symbol muzyczny. Czasami tam gdzie ma to uzasadnienie np. w materiałach promocyjnych, Microsoft używa nazwy C♯ zamiast C#.

Cechy języka

Język C# ma wiele cech wspólnych z językami programowania Object Pascal, Delphi, C++ i Java.

Jeśli komentarz zaczyna się od /// lub /**, to jest to komentarz, w którym umieszcza się dokumentację do kodu.

C# 2.0

Rozszerzenia do języka C# zostały przedstawione przez Microsoft w roku 2005 wraz z prezentacją .NET Framework 2.0 oraz Visual Studio 2005.

Najważniejsze z rozszerzeń to:

Kopiec zaimplementowany przy pomocy szablonu klasy:

public class Kopiec<T>
{
      private T[] tablica;

      // konstruktor
      public Kopiec(T[] tablica) {...}

      // wstawianie nowego elementu do kopca
      public void Wstaw(T elem) {...}
}
someButton.Click += delegate { MessageBox.Show("Wciśnięto przycisk"); };

C# 3.0

C# 3.0 przedstawiono na PDC 2005. Jest obsługiwany przez środowisko Visual Studio 2008, a jego kompilator jest częścią platformy .NET Framework 3.5.

C# 4.0

Jest obsługiwany przez środowisko Visual Studio 2010, a jego kompilator jest częścią platformy .NET Framework 4.0.

C# 5.0

Nowe elementy języka:

C# 6.0

C# 7.0

public (string name, int age) GetStudentInfo()
{
    return (name: "Annie", age: 25);
}

var (name, age) info = GetStudentInfo();
public class Score
{
    private int value = 5;
    
    public ref int Get()
    {
        return ref this.value;
    }
}
public static double ComputeArea_Version4(object shape)
{
    switch (shape)
    {
        case Square s when s.Side == 0:
        case Circle c when c.Radius == 0:
        case Triangle t when t.Base == 0 || t.Height == 0:
        case Rectangle r when r.Length == 0 || r.Height == 0:
            return 0;
    }
}

C# 7.1

private static int NewMethodWithArgs(int i = default, object o = default)
{
    return default;
}
int count = 5;
string label = "Colors used in the map";
var pair = (count, label); // zmienna pair będzie posiadać dwa elementy: pair.count oraz pair.label

C# 8.0

Jest obsługiwany przez środowisko Visual Studio 2019, a jego kompilator jest częścią platformy .NET Core 3.x.

var zdanie = new string[]
{
                // indeks od początku   indeks od końca
    "Ala",      // 0                    ^7
    "ma",       // 1                    ^6
    "kota",     // 2                    ^5
    "a",        // 3                    ^4
    "kot",      // 4                    ^3
    "ma",       // 5                    ^2
    "Alę.",     // 6                    ^1
};              // 7 (lub words.Length) ^0

Console.WriteLine($"Ostatnie słowo w zdaniu to {zdanie[^1]}"); // program wypisze "Alę."

C# 9.0

Jest obsługiwany przez środowisko Visual Studio 2019, a jego kompilator jest częścią platformy .NET 5.0.

C# 10.0

Jest obsługiwany przez środowisko Visual Studio 2022, a jego kompilator jest częścią platformy .NET 6.0

C# 11.0

Jest obsługiwany przez środowisko Visual Studio 2022, a jego kompilator jest częścią platformy .NET 7

C# 12.0

Jest obsługiwany przez środowisko Visual Studio 2022, a jego kompilator jest częścią platformy .NET 8

C# 13

C# 13 jest wspierany na platformie .NET 9

C# 14

C# 14 jest wspierany na platformie .NET 10

Przykładowe programy

Prosty program napisany w języku C#. Po jego skompilowaniu i uruchomieniu wyświetlony zostanie napis "Podaj swoje imię: ". Po pobraniu imienia od użytkownika, zostanie ono wyświetlone w następnej linii.

using System;

public class PrzykladowaKlasa
{
    public static void Main()
    {
        Console.WriteLine("Podaj swoje imię:");

        string imie = Console.ReadLine();
        Console.WriteLine($"Twoje imię to: {imie}");

        Console.WriteLine("Wciśnij dowolny klawisz by zakończyć program.");
        Console.ReadKey();
    }
}

Inny program symulujący uniwersalną kostkę do gry, można w nim zobaczyć kilka podstawowych instrukcji języka C# oraz wykorzystanie funkcji instrukcji najwyższego poziomu.

int kostka;
Random liczba = new();
string input = string.Empty;
Console.Clear();
while (true)
{
    Console.Write("Iluścienną kostką chcesz grać? ");
    try
    {
        kostka = int.Parse(Console.ReadLine());
    }
    catch
    {
        Console.WriteLine("Podano nieprawidłowe dane!");
        kostka = 0;
    }
    if (kostka < 4)
    {
        Console.WriteLine("Kostka ma minimum 4 ściany.");
    }
    else break;
}
Console.Clear();
while (!input.Equals("q"))
{
    Console.WriteLine($"Wylosowana liczba to: {liczba.Next(kostka) + 1}\tAby zakończyć wciśnij Q + Enter");
    input = Console.ReadLine();
}

Przykładowy program który działa jak stoper i aktualizuje się co sekundę:

using System;
using System.Threading;

class Stopwatch
{
    static void Main()
    {
        int seconds = 0;
        while (true)
        {
            Console.Clear(); // Wyczyść konsolę, aby zaktualizować czas na tym samym miejscu
            Console.WriteLine("Czas: {0} sekund", seconds);
            Thread.Sleep(1000); // Poczekaj 1 sekundę
            seconds++; // Zwiększ licznik sekund o 1
        }
    }
}

Zobacz też

Inne języki platformy .NET:

Platforma .NET:

Przypisy

  1. ↑ Announcing .NET 10 - .NET Blog. devblogs.microsoft.com, 2025-11-11. [dostęp 2026-02-05]. (ang.).
  2. ↑ Home - Ecma International [online], ecma-international.org [dostęp 2021-01-17] [zarchiwizowane z adresu 2003-08-03] (ang.).
  3. ↑ A Tour of C# - C# Guide | Microsoft Docs. docs.microsoft.com, 2021-01-28. [dostęp 2021-08-11]. (ang.).
  4. ↑ Trim self-contained applications - .NET | Microsoft Docs. docs.microsoft.com, 2020-04-03. [dostęp 2021-08-11]. (ang.).
  5. ↑ .NET 7 Preview 3 Is All About Native AOT. visualstudiomagazine.com, 2022-04-15. [dostęp 2024-04-06]. (ang.).
  6. ↑ Naomi Hamilton: The A–Z of Programming Languages: C#. Computerworld, 2008-10-01. [dostęp 2016-10-24]. [zarchiwizowane z tego adresu (2015-04-02)]. (ang.).
  7. ↑ https://web.archive.org/web/20170622073304/https://www.microsoft.com/presspass/images/gallery/boxshots/web/visual-c-sharp03.jpg
  8. ↑ An Introduction to New Features in C# 5.0 – Microsoft MVP Award Program Blog [online], blogs.msdn.com [dostęp 2017-11-22] [zarchiwizowane z adresu 2013-04-27] (ang.).
  9. ↑ What's New in C# - C# Guide | Microsoft Docs [online], msdn.microsoft.com [dostęp 2017-11-22] (ang.).
  10. ↑ s, Visual Studio 2019 version 16.11 Release Notes [online], docs.microsoft.com [dostęp 2021-09-01] (ang.).
  11. ↑ BillWagner, Co nowego w języku C# 8.0 — przewodnik po języku C# [online], docs.microsoft.com [dostęp 2021-09-01] (pol.).
  12. ↑ Welcome to C# 9.0 [online], .NET Blog, 20 maja 2020 [dostęp 2021-08-30] (ang.).
  13. ↑ C# 9.0 w wersji preview już dostępny [online], bulldogjob.pl [dostęp 2021-08-30] (pol.).
  14. ↑ BillWagner, Co nowego w języku C# 10 — przewodnik po języku C# [online], docs.microsoft.com [dostęp 2022-04-17] (pol.).
  15. ↑ Nowości w .NET 6 i C# 10 [online], bulldogjob.pl [dostęp 2022-04-17] (pol.).
  16. ↑ C# 11 – sprawdź, co nowego! [online], JCommerce | Outsourcing usług IT, BI, EMM, Managed Services, 21 września 2022 [dostęp 2022-12-27] (pol.).
  17. ↑ C# 11 – przegląd nadchodzących nowości [online], bulldogjob.pl [dostęp 2022-12-27] (pol.).
  18. ↑ C# Language Design, .NET Platform, 27 grudnia 2022 [dostęp 2022-12-27].
  19. ↑ https://bulldogjob.pl/readme/nowosci-w-jezyku-c-12-krok-naprzod-w-programowaniu-obiektowym
  20. ↑ Co nowego w języku C# 12 — Przewodnik języka C# - C# | Microsoft Learn [online], microsoft.com [dostęp 2024-04-22] (pol.).
  21. 1 2 BillWagner, What's new in C# 14 [online], learn.microsoft.com [dostęp 2026-02-05] (ang.).

Linki zewnętrzne