Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek obsahuje základní přehled jazyka C#. Ať už píšete svůj první program, nebo jste zkušený vývojář, který zkoumá jazyk C#, najdete tady klíčové koncepty a funkce.
Návod
Začínáte s programováním? Skimujte tento článek pro celkový přehled a poté začněte kurzy pro začátečníky zaměřené na praktické psaní kódu.
Pocházíte z Javy, JavaScriptu nebo Pythonu? Přečtěte si tipy pro vývojáře v Javě, JavaScriptu nebo Pythonu společně s tímto článkem.
Zkušený vývojář nově pracující s C#? Tento článek popisuje, co znamená, že jazyk C# je výrazný. Podívejte se na to, co můžete pomocí jazyka C# sestavit a najít úlohu, která odpovídá vašim cílům.
Jazyk C# je nejoblíbenějším jazykem pro platformu .NET, bezplatné, multiplatformní opensourcové vývojové prostředí. Programy jazyka C# se můžou spouštět na mnoha různých zařízeních, od zařízení Internetu věcí (IoT) až po cloud a všude mezi sebou. Můžete psát aplikace pro telefony, stolní počítače a přenosné počítače a servery. Podívejte se na Co můžete postavit v C# pro přehled typů aplikací.
Jazyk C# je multiplatformní jazyk pro obecné účely, který vývojářům umožňuje produktivní práci při psaní vysoce výkonného kódu. Jazyk C# má širokou podporu v ekosystému a mnoha úlohách. Na základě objektově orientovaných principů zahrnuje mnoho funkcí z jiných paradigmat, především funkcionální programování. Funkce nízké úrovně podporují scénáře vysoké efektivity bez psaní nebezpečného kódu. Většina modulů runtime a knihoven je napsaná v jazyce C# a pokroky v jazyce C# často využívají všechny vývojáře .NET.
Jazyk C# je v sadě jazyků jazyka C.
Syntaxe jazyka C# je známá, pokud jste použili jazyk C, C++, JavaScript, TypeScript nebo Java. Podobně jako C a C++ definují středníky (;) konec příkazů. V identifikátorech jazyka C# se rozlišují malá a velká písmena. Jazyk C# má stejné použití složených závorek, { a }, příkazů ovládání jako if, else a switch, a smyček jako for a while. Také jazyk C# má foreach příkaz pro libovolný typ kolekce.
Hello World
Program "Hello, World" tradičně představuje programovací jazyk. Tady je program v jazyce C#:
// This line prints "Hello, World"
Console.WriteLine("Hello, World");
Řádek začínající // je komentář na jednom řádku. Jednořádkové komentáře jazyka C# začínají // a pokračují až na konec aktuálního řádku. Jazyk C# také podporuje víceřádkové komentáře. Víceřádkové komentáře začínají /* a končí na */. Metoda WriteLine třídy Console, která je v jmenném prostoru System, vytvoří výstup programu. Standardní knihovny tříd poskytují tuto třídu a každý program jazyka C# automaticky odkazuje na tyto knihovny ve výchozím nastavení. Jiný formulář programu vyžaduje deklaraci obsahující třídy a metody pro vstupní bod programu. Kompilátor syntetizuje tyto prvky při použití příkazů nejvyšší úrovně.
Tento alternativní formát je stále platný a obsahuje mnoho základních konceptů ve všech programech jazyka C#. Mnoho existujících ukázek jazyka C# používá následující ekvivalentní formát:
using System;
namespace TourOfCsharp;
class Program
{
static void Main()
{
// This line prints "Hello, World"
Console.WriteLine("Hello, World");
}
}
Předchozí program "Hello, World" začíná direktivou using , která odkazuje na System obor názvů. Obory názvů poskytují hierarchický způsob uspořádání programů a knihoven jazyka C#. Obory názvů obsahují typy a další obory názvů. Obor názvů System například obsahuje mnoho typů, třídu Console odkazovanou v programu, a mnoho dalších oborů názvů, jako IO a Collections. Direktiva using , která odkazuje na daný obor názvů, umožňuje nekvalifikované použití typů, které jsou členy tohoto oboru názvů. Vzhledem k direktivě using může program používat Console.WriteLine jako zkratku pro System.Console.WriteLine. V předchozím příkladu byl tento obor názvů implicitně zahrnutý.
Poznámka:
Předchozí program deklaruje Program třídu s jedním členem: metoda s názvem Main. Tento formát používá mnoho existujících ukázek a kurzů jazyka C#. Podle konvence platí, že pokud neexistují žádné příkazy nejvyšší úrovně, statická metoda s názvem Main slouží jako vstupní bod programu jazyka C#. Oba formáty se kompilují do stejného kódu. Tento formát nemusíte používat – aplikace založené na souborech a příkazy nejvyšší úrovně jsou jednoduššími způsoby, jak začít.
Souborové aplikace
Jazyk C# je kompilovaný jazyk. Ve většině programů jazyka dotnet build C# použijete příkaz ke kompilaci skupiny zdrojových souborů do binárního balíčku. Pak tento příkaz použijete dotnet run ke spuštění programu. (Tento proces můžete zjednodušit, protože dotnet run program zkompiluje před spuštěním v případě potřeby.) Tyto nástroje podporují bohatý jazyk možností konfigurace a přepínačů příkazového řádku. Rozhraní dotnet příkazového řádku (CLI), které je součástí sady .NET SDK, poskytuje mnoho nástrojů pro generování a úpravy souborů jazyka C#.
Od C# 14 a .NET 10 můžete vytvářet souborové aplikace, které zjednodušuje sestavování a spouštění programů v jazyce C#. Pomocí příkazu spustíte dotnet run program obsažený v jednom *.cs souboru. Pokud je například následující kód uložen v souboru s názvem hello-world.cs, můžete ho spustit zadáním dotnet run hello-world.cs:
#!/usr/bin/env dotnet
Console.WriteLine("Hello, World!");
První řádek programu obsahuje #! posloupnost (shebang) pro unixové operační systémy. To umožňuje spuštění souboru přímo pomocí jejího názvu, když je v souboru nastaveno oprávnění execute (+x). Soubor C# můžete například spustit přímo z příkazového řádku:
./hello-world.cs
Zdrojem těchto programů musí být jeden soubor, ale jinak je platná všechna syntaxe jazyka C#. Aplikace založené na souborech můžete použít pro malé nástroje příkazového řádku, prototypy nebo jiné experimenty.
Známé funkce jazyka C#
Jazyk C# je dostupný pro začátečníky, ale nabízí pokročilé funkce pro zkušené vývojáře, kteří píší specializované aplikace. Můžete být produktivní rychle. Můžete se dozvědět více specializované techniky, jak je potřebujete pro své aplikace.
Aplikace v jazyce C# využívají automatickou správu paměti modulu runtime. Aplikace jazyka C# také používají rozsáhlé knihovny modulu runtime poskytované sadou .NET SDK. Některé komponenty jsou nezávislé na platformě, jako jsou knihovny systému souborů, kolekce dat a matematické knihovny. Jiné jsou specifické pro jednu úlohu, jako jsou webové knihovny ASP.NET Core nebo knihovna uživatelského rozhraní .NET MAUI. Bohatý opensourcový ekosystém nuGet rozšiřuje knihovny, které jsou součástí modulu runtime. Tyto knihovny poskytují ještě více komponent, které můžete použít.
C# je silně typovaný jazyk. Každá proměnná, kterou deklarujete, má typ známý v době kompilace. Kompilátor nebo nástroje pro úpravy vám řeknou, jestli tento typ používáte nesprávně. Tyto chyby můžete opravit před spuštěním programu.
Základní datové typy jsou integrované do jazyka a modulu runtime: typy hodnot jako int, double, charodkazové typy jako string, pole a další kolekce. Při psaní programů vytváříte vlastní typy. Tyto typy mohou být struct typy hodnot nebo class typy, které definují objektově orientované chování. Modifikátor record můžete přidat buď k typům struct, nebo k typům class, aby kompilátor syntetizoval kód pro porovnání rovnosti. Můžete také vytvořit interface definice, které definují kontrakt nebo sadu členů, jež musí poskytnout typ implementující toto rozhraní. Můžete také definovat obecné typy a metody.
Obecné typy používají parametry typu k poskytnutí zástupného symbolu pro skutečný typ při použití.
Při psaní kódu definujete funkce, označované také jako metody, jako členy typů struct a class. Tyto metody definují chování vašich typů. Metody můžete přetížit různými čísly nebo typy parametrů. Metody můžou volitelně vrátit hodnotu. Kromě metod mohou mít typy jazyka C# vlastnosti, což jsou datové prvky založené na funkcích označovaných jako přístupové objekty. Typy jazyka C# mohou definovat události, které umožňují typu upozorňovat odběratele na důležité akce. Jazyk C# podporuje objektově orientované techniky, jako je dědičnost a polymorfismus pro class typy.
Aplikace v jazyce C# používají výjimky k hlášení a zpracování chyb. Tento postup je známý, pokud jste použili jazyk C++ nebo Javu. Kód vyvolá výjimku, když nemůže udělat to, co bylo zamýšleno. Jiný kód, bez ohledu na počet úrovní zásobníku volání, se může volitelně obnovit pomocí try - catch bloku.
Návod
Další informace o typech, metodách a výjimkách najdete v části Základy jazyka C# . Podrobně se zabývá systémem typů, objektově orientovaným programováním a zpracováním výjimek .
Výrazné funkce jazyka C#
Některé prvky jazyka C# můžou být méně známé.
Jazyk C# poskytuje porovnávání vzorů. Tyto výrazy umožňují kontrolovat data a rozhodovat se na základě jejich charakteristik. Porovnávání vzorů poskytuje skvělou syntaxi pro tok řízení na základě dat. Následující kód ukazuje, jak lze metody pro logické operace "a", "nebo" a "xor" vyjádřit pomocí syntaxe porovnávání vzorů:
public static bool Or(bool left, bool right) =>
(left, right) switch
{
(true, true) => true,
(true, false) => true,
(false, true) => true,
(false, false) => false,
};
public static bool And(bool left, bool right) =>
(left, right) switch
{
(true, true) => true,
(true, false) => false,
(false, true) => false,
(false, false) => false,
};
public static bool Xor(bool left, bool right) =>
(left, right) switch
{
(true, true) => false,
(true, false) => true,
(false, true) => true,
(false, false) => false,
};
Výrazy porovnávání vzorů je možné zjednodušit použitím _ jako catchall pro libovolnou hodnotu. Následující příklad ukazuje, jak můžete zjednodušit metodu a:
public static bool ReducedAnd(bool left, bool right) =>
(left, right) switch
{
(true, true) => true,
(_, _) => false,
};
Předchozí příklady také deklarují n-tice, jednoduché datové struktury.
Řazená kolekce členů je seřazená posloupnost hodnot s pevnou délkou s volitelnými názvy a jednotlivými typy. Sekvenci uzavřete mezi znaky ( a ).
(left, right) deklarace definuje n-tici se dvěma logickými hodnotami: left a right. Každé rameno přepínače deklaruje hodnotu n-tice, například (true, true). N-tice poskytují pohodlnou syntaxi pro deklaraci jediné hodnoty sestávající z několika hodnot libovolného typu.
Výrazy kolekce poskytují společnou syntaxi pro zadání hodnot kolekce. Zapisujete hodnoty nebo výrazy mezi [ a ] znaky a kompilátor tento výraz převede na požadovaný typ kolekce:
int[] numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
List<string> names = ["Alice", "Bob", "Charlie", "David"];
IEnumerable<int> moreNumbers = [.. numbers, 11, 12, 13];
IEnumerable<string> empty = [];
Předchozí příklad ukazuje různé typy kolekcí, které můžete inicializovat pomocí výrazů kolekce. Jeden příklad používá [] prázdný výraz kolekce k deklaraci prázdné kolekce. Další příklad používá ..rozšíření elementu k rozšíření kolekce a přidání všech jejích hodnot do daného výrazu kolekce.
Výrazy indexu a rozsahu můžete použít k načtení jednoho nebo více prvků z indexovatelné kolekce:
string second = names[1]; // 0-based index
string last = names[^1]; // ^1 is the last element
int[] smallNumbers = numbers[0..5]; // elements at indexes 0 to 4
Index ^ označuje z konce místo od začátku. Prvek ^0 označuje místo za koncem kolekce, takže ^1 je posledním prvkem. Výraz .. oblasti označuje rozsah prvků, které se mají zahrnout. Rozsah začíná prvním indexem a zahrnuje všechny prvky až do, ale ne včetně elementu na posledním indexu.
Další informace o výrazech indexu a rozsahu najdete v článku Prozkoumat indexy a rozsahy .
Jazykový integrovaný dotaz (LINQ) poskytuje běžnou syntaxi založenou na vzorech pro dotazování nebo transformaci jakékoli kolekce dat. LINQ sjednocuje syntaxi pro dotazování kolekcí v paměti, strukturovaných dat, jako jsou XML nebo JSON, databázové úložiště a dokonce i cloudová datová rozhraní API. Naučíte se jednu sadu syntaxe a můžete vyhledávat a manipulovat s daty bez ohledu na jejich úložiště. Následující dotaz najde všechny studenty, jejichž průměr známek je větší než 3,5:
var honorRoll = from student in Students
where student.GPA > 3.5
select student;
Předchozí dotaz funguje pro mnoho typů úložiště reprezentovaných .Students Může se jednat o kolekci objektů, databázové tabulky, objektu blob cloudového úložiště nebo struktury XML. Stejná syntaxe dotazů funguje pro všechny typy úložišť.
Asynchronní programovací model založený na úlohách umožňuje psát kód, který čte, jako by běžel synchronně, i když běží asynchronně. Pomocí asyncawait klíčových slov popisuje metody, které jsou asynchronní, a když se výraz vyhodnotí asynchronně. Následující ukázka čeká na asynchronní webový požadavek. Po dokončení asynchronní operace vrátí metoda délku odpovědi:
public static async Task<int> GetPageLengthAsync(string endpoint)
{
var client = new HttpClient();
var uri = new Uri(endpoint);
byte[] content = await client.GetByteArrayAsync(uri);
return content.Length;
}
Jazyk C# také podporuje await foreach příkaz pro iteraci kolekce založené na asynchronní operaci, jako je stránkovací rozhraní API GraphQL. Následující ukázka čte data v blocích a vrací iterátor, který poskytuje přístup ke každému prvku, když je k dispozici:
public static async IAsyncEnumerable<int> ReadSequence()
{
int index = 0;
while (index < 100)
{
int[] nextChunk = await GetNextChunk(index);
if (nextChunk.Length == 0)
{
yield break;
}
foreach (var item in nextChunk)
{
yield return item;
}
index++;
}
}
Volající můžou kolekci iterovat pomocí příkazu await foreach :
await foreach (var number in ReadSequence())
{
Console.WriteLine(number);
}
Jako součást ekosystému .NET můžete také použít Visual Studio nebo Visual Studio Code se sadou C# Dev Kit. Tyto nástroje poskytují bohaté znalosti jazyka C#, včetně kódu, který píšete. Poskytují také možnosti ladění.
Návod
Další informace o porovnávání vzorů, LINQ a asynchronním programování najdete v částech funkční techniky, přehled LINQ a asynchronní programování .
Další kroky
Tento článek poskytuje rychlou prohlídku jazyka C#. Tady je postup podle toho, jaké máte zkušenosti:
- Začněte psát kód: Krok za krokem si projděte kurzy pro začátečníky a seznamte se s jazykem C#.
- Podrobnější informace: Podrobné informace o systému typů, objektově orientovaném programování a zpracování chyb najdete v části Základy jazyka C# .
- Vytvořte něco: Prozkoumejte, co můžete pomocí jazyka C# vytvořit , abyste našli nápady, které vás zajímají.
- Pochází z jiného jazyka? Přečtěte si příručky pro vývojáře v Javě, JavaScriptu nebo Pythonu .
- Vytváření souborových aplikací: Naučte se vytvářet souborové aplikace pro malé programy a prototypy.