Loading AI tools
język programowania Z Wikipedii, wolnej encyklopedii
C#[2] (C Sharp; wym. [siːˈʃɑːp]; dosłownie „cis”, „c z krzyżykiem”) – wieloparadygmatowy język programowania zaprojektowany w latach 1998–2001 przez zespół pod kierunkiem Andersa Hejlsberga dla firmy Microsoft.
![]() Logo języka | |
Pojawienie się |
lipiec 2000 |
---|---|
Paradygmat | |
Implementacje |
C# |
Aktualna wersja stabilna |
12.0[1] (14 listopada 2023; ponad 10 miesięcy temu) |
Twórca | |
Platforma sprzętowa | |
Platforma systemowa |
Microsoft Windows: .NET Framework |
Strona internetowa |
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[3] lub zawarcia go w dystrybuowanej aplikacji (tzw. aplikacja typu self-contained)[4]. Począwszy od wersji środowiska .NET 7, aplikacje mogą być także kompilowane w wersji natywnej dla wybranej platformy[5].
Nazwa języka powstała analogicznie jak nazwa C++. Operator ++ w 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++[6].
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#[7].
Język C# ma wiele cech wspólnych z językami programowania Object Pascal, Delphi, C++ i Java.
object
(System.Object
), która stanowi element nadrzędny tej hierarchii. W szczególności oznacza to, że również typy proste (int
, double
, itd.) są strukturami z właściwymi sobie metodami, np. int i=1; string s = i.ToString();
//
to komentarz jednoliniowy, czyli wszystkiego, co znajduje się za nim, kompilator nie bierze pod uwagę./*
a kończy */
. Kompilator nie bierze pod uwagę tego, co znajduje się pomiędzy.Jeśli komentarz zaczyna się od ///
lub /**
, to jest to komentarz, w którym umieszcza się dokumentację do kodu.
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) {...}
}
yield
.partial
.someButton.Click += delegate { MessageBox.Show("Wciśnięto przycisk"); };
select
, from
, where
" pozwalające na dostęp do SQL, XML, kolekcji i innych (Language integrated query (LINQ))Klient k = new Klient(); k.Imie="Jan";
staje się Klient k = new Klient() { Imie="Jan" };
listOfFoo.Where(delegate(Foo x) { return x.size>10;})
staje się listOfFoo.Where(x => x.size>10);
var x = "hello";
oznacza to samo, co string x = "hello";
var x = new { Imie = "Jan" }
public static int Liczba { get; internal set; }
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.
dynamic
.ref
dla wywołań metod obiektów COM.Jest obsługiwany przez środowisko Visual Studio 2010, a jego kompilator jest częścią platformy .NET Framework 4.0.
await
i async
ułatwiające programowanie asynchroniczne.Caller Info
umożliwiający uzyskanie szczegółowych informacji o wywołaniu metod.nameof
catch
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;
}
}
when
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;
}
}
default
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
Jest obsługiwany przez środowisko Visual Studio 2019, a jego kompilator jest częścią platformy .NET Core 3.x[10][11].
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ę."
Jest obsługiwany przez środowisko Visual Studio 2019, a jego kompilator jest częścią platformy .NET 5.0[12][13].
public record Osoba
{
public string Imie { get; set; }
public string Nazwisko { get; set; }
};
public class Osoba
{
public int Wiek { get; init; }
}
Jest obsługiwany przez środowisko Visual Studio 2022, a jego kompilator jest częścią platformy .NET 6.0[14][15]
Jest obsługiwany przez środowisko Visual Studio 2022, a jego kompilator jest częścią platformy .NET 7[16][17][18]
Jest obsługiwany przez środowisko Visual Studio 2022, a jego kompilator jest częścią platformy .NET 8[19][20]
public class Osoba(string imie)
{
public string Imie => imie;
}
int[] numbers = [1, 2, 3, 4];
List<string> strings = [];
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
}
}
}
Inne języki platformy .NET:
Platforma .NET:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.