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.
Pokud se připojujete k týmu, který používá jazyk C#, nebo ho zkoumáte pro vývoj na straně serveru nebo jako full-stack, tento článek vám pomůže rychle být produktivní. Zvýrazňuje, co je známé z JavaScriptu a TypeScriptu a co je nového v jazyce C#.
C#, TypeScript a JavaScript jsou všichni členy řady jazyků C. Podobnosti mezi jazyky vám pomůžou rychle dosáhnout produktivity v jazyce C#.
-
Podobná syntaxe: JavaScript, TypeScript a C# jsou v sadě jazyků C. Tato podobnost znamená, že C# už můžete číst a rozumět. Existuje několik rozdílů, ale většina syntaxe je stejná jako JavaScript a C. Složené závorky a středníky jsou známé. Řídicí příkazy jako
if,elseaswitchjsou stejné. Příkazy cyklufor,while, ado...whilejsou stejné. Stejná klíčová slova proclassainterfacejsou v jazycích C# i TypeScript. Modifikátory přístupu v TypeScriptu a C#, odpublicdoprivate, jsou stejné. -
Token
=>: Všechny jazyky podporují lehké definice funkcí. V jazyce C# se označují jako výrazy lambda. V JavaScriptu se obvykle označují jako šipkové funkce. - Hierarchie funkcí: Všechny tři jazyky podporují místní funkce, což jsou funkce definované v jiných funkcích.
-
Async / Await: Všechny tři jazyky sdílejí stejná klíčová slova
asyncaawaitpro asynchronní programování. - Garbage collector: Všechny tři jazyky spoléhají na garbage collector pro automatickou správu paměti.
-
Model událostí: Syntaxe jazyka
eventC#je podobná modelu JavaScriptu pro události modelu DOM (Document Object Model). - Správce balíčků: NuGet je nejběžnější správce balíčků pro C#, podobně jako npm pro javascriptové aplikace. Knihovny jazyka C# se doručují v sestaveních.
Syntaxe na první pohled
Následující příklady ukazují několik běžných vzorů vedle sebe. Tato porovnání nejsou vyčerpávající, ale poskytují rychlý pocit rozdílů v syntaxi.
Psaní poznámek:
// TypeScript
let name: string = "Hello";
let count: number = 5;
// C#
string name = "Hello";
int count = 5;
Asynchronní / čekat:
// TypeScript
async function fetchData(): Promise<string> {
const response = await fetch(url);
return await response.text();
}
// C#
async Task<string> FetchDataAsync() {
var response = await client.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
Další informace najdete v tématu Asynchronní programování.
Třídy:
// TypeScript
class Point {
constructor(public x: number, public y: number) {}
}
// C#
record Point(int X, int Y);
Další informace najdete v tématu Záznamy.
Porovnávání vzorů:
// TypeScript - manual type checking
if (typeof value === "string") { /* ... */ }
// C# - pattern matching
if (value is string s) { /* use s */ }
Další informace najdete v tématu Porovnávání vzorů.
Co je nového pro vás v jazyce C#
Když se seznámíte s jazykem C#, setkáte se s koncepty, které nejsou součástí JavaScriptu. Některé z těchto konceptů vás můžou znát, pokud používáte TypeScript:
-
Systém typů jazyka C#: C# je silně typovaný jazyk. Každá proměnná má typ a tento typ se nemůže změnit. Definujete
classnebostructtypy. Můžete definovatinterfacedefinice, které definují chování implementované jinými typy. TypeScript obsahuje mnoho z těchto konceptů, ale protože TypeScript je založený na JavaScriptu, není systém typů tak striktní. -
Porovnávání vzorů: Porovnávání vzorů umožňuje stručné podmíněné příkazy a výrazy založené na tvaru složitých datových struktur.
Výraz
isověří, zda proměnná odpovídá nějakému vzoru. Výraz založený naswitchvzorech poskytuje bohatou syntaxi pro kontrolu proměnné a rozhodování na základě jejích charakteristik. - Interpolace řetězců a nezpracované řetězcové literály: Interpolace řetězců umožňuje vložit vyhodnocené výrazy do řetězce místo použití pozičních identifikátorů. Surové řetězcové literály poskytují způsob, jak minimalizovat escape sekvence v textu.
-
Typy s možnou hodnotou null a bez hodnoty null: C# podporuje typy hodnot s možnou hodnotou null a odkazové typy s možnou hodnotou null připojením
?přípony k typu. U nulovatelných typů vás kompilátor upozorní, pokud před dereferencí výrazu nekontrolujetenull. U nenulových typů vás kompilátor upozorní, pokud k této proměnné možná přiřadítenullhodnotu. Tyto funkce mohou minimalizovat vyvolání System.NullReferenceException vaší aplikací. Syntaxe může být známá z použití TypeScriptu?pro volitelné vlastnosti. - LINQ: Jazyk integrovaný dotaz (LINQ) poskytuje běžnou syntaxi pro dotazování a transformaci dat bez ohledu na jejich úložiště.
Návod
Další informace o systému typů jazyka C#, včetně classstructobecných typů a rozhraní jazyka C#, najdete v přehledu systému typů v části Základy.
Jak se dozvíte více, zjeví se další rozdíly, ale mnohé z těchto rozdílů jsou v rozsahu menší.
Některé známé funkce a idiomy z JavaScriptu a TypeScriptu nejsou v jazyce C#dostupné:
-
dynamické typy: Jazyk C# používá statické psaní. Deklarace proměnné obsahuje typ a tento typ se nemůže změnit. V jazyce C# existuje
dynamictyp, který poskytuje dynamické vazby. -
Dědičnost prototypů: Dědičnost jazyka C# je součástí deklarace typu. Deklarace jazyka C#
classuvádí všechny základní třídy. V JavaScriptu nastavíte vlastnost__proto__, abyste nastavili základní typ na libovolnou instanci. - Interpretovaný jazyk: Před spuštěním je nutné zkompilovat kód jazyka C#. Kód JavaScriptu lze spustit přímo v prohlížeči.
Kromě toho není v jazyce C# k dispozici několik dalších funkcí TypeScriptu:
- Typy sjednocení: Počínaje C# 15 podporuje C# typy sjednocení. Sjednocení definuje uzavřenou sadu pojmenovaných případů, které může představovat hodnota, a kompilátor zajišťuje vyčerpávající porovnávání vzorů v těchto případech.
-
Dekorátory: C# nemá dekorátory. Některé běžné dekorátory, jako
@sealedjsou například vyhrazená klíčová slova v jazyce C#. Další běžné dekorátory mohou mít odpovídající atributy. Pro další dekorátory můžete vytvořit vlastní atributy. - Mírnější syntaxe: Kompilátor jazyka C# syntakticky analyzuje kód přísněji, než vyžaduje JavaScript.
Pokud vytváříte webovou aplikaci, zvažte použití Blazoru k sestavení aplikace. Blazor je plnohodnotná webová architektura vytvořená pro jazyk C#. Komponenty Blazor se můžou spouštět buď na serveru jako sestavení .NET, nebo na straně klienta pomocí WebAssembly. Blazor podporuje spolupráci s vašimi oblíbenými javascriptovými nebo typescriptovými knihovnami.
Další kroky
- Prohlídka jazyka C#: Získejte základní přehled všech funkcí jazyka C#.
- Kurzy pro začátečníky: Krok za krokem se naučíte C# s interaktivními lekcemi.
- Co můžete vytvořit pomocí jazyka C#: Prozkoumejte typy aplikací, které můžete vytvořit pomocí jazyka C#.
- Základy jazyka C#: Ponořte se hlouběji do systému typů, objektově orientovaného programování a dalších možností.