„`html
C# – Wprowadzenie
C# (C Sharp) to wieloparadygmatowy język programowania stworzony przez zespół kierowany przez Andersa Hejlsberga dla firmy Microsoft w latach 1998–2001. Programy napisane w C# są kompilowane do Common Intermediate Language (CIL), co pozwala na ich uruchamianie w różnych środowiskach, takich jak .NET Framework, .NET Core i Mono.
Nazwa i symbolika
Nazwa C# nawiązuje do języków C i C++ – symbol # przypomina cztery połączone operatory +, co sugeruje rozwinięcie w stosunku do C/C++. Czasami używana jest nazwa C♯, jednak z uwagi na ograniczenia klawiatur i czcionek, powszechnie stosuje się symbol #.
Cechy języka
- Obiektowość: hierarchia klas z klasą nadrzędną
System.Object
. - Automatyczne zarządzanie pamięcią.
- Właściwości i indeksery w klasach.
- Delegaty i zdarzenia jako rozwinięcie wskaźników z C++.
- Refleksja i atrybuty do analizy kodu w czasie działania.
- Typy ogólne (generics) wprowadzające polimorfizm parametryczny.
- Dynamiczne tworzenie kodu w czasie wykonywania.
- Obszerna biblioteka klas BCL.
- Obsługa komentarzy jednoliniowych i wielowierszowych.
Ewolucja C#
C# 2.0
- Wprowadzenie typów generycznych.
- Wprowadzenie słowa kluczowego
yield
. - Typy częściowe i metody anonimowe.
- Typy Nullable dla obsługi wartości null.
C# 3.0
- LINQ – zapytania zintegrowane w języku.
- Proste inicjowanie obiektów i wyrażenia lambda.
- Typy domniemane i anonimowe.
- Rozszerzanie typów.
C# 4.0
- Obsługa języków dynamicznych.
- Parametry opcjonalne i argumenty nazwane.
C# 5.0
- Wsparcie dla programowania asynchronicznego z użyciem
async
iawait
.
C# 6.0
- Nowe możliwości formatowania łańcuchów znaków.
- Filtry wyjątków w bloku
catch
.
C# 7.0
- Funkcje lokalne i Value Tuples.
- Pattern matching.
C# 8.0
- Domyślne metody interfejsu i ulepszenia dopasowania wzorca.
C# 9.0
- Typy rekordów i niemutowalne właściwości.
C# 10.0
- Nowa składnia dla kontroli wartości null.
- Global using i deklaracja przestrzeni nazw o zakresie pliku.
C# 11.0
- Atrybuty generyczne i modyfikator
required
.
C# 12.0
- Konstruktory podstawowe i wyrażenia kolekcji.
Przykładowe programy
Oto prosty program w C#, który prosi użytkownika o imię i je wyświetla:
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 przykład to program symulujący kostkę do gry, obsługujący różne liczby ścianek:
int kostka;
Random liczba = new();
while (true)
{
Console.Write(„Iluścienną kostką chcesz grać? „);
kostka = int.Parse(Console.ReadLine());
if (kostka < 4) Console.WriteLine("Kostka ma minimum 4 ściany.");
else break;
}
while (true)
{
Console.WriteLine($"Wylosowana liczba to: {liczba.Next(kostka) + 1}");
if (Console.ReadLine() == "q") break;
}
„`