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 začínáte novou práci nebo se připojíte k týmu, který používá C#, pomůže vám tento článek rychle dosáhnout produktivity. Zvýrazňuje, co je známé z Javy a co je nového v jazyce C#.
C# a Java mají mnoho podobností. Při učení jazyka C# můžete využít většinu znalostí, které už máte z programování v Javě:
-
Podobná syntaxe: Java i 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 Java a C. Složené závorky a středníky jsou známé. Řídicí příkazy jako
if,elseswitchjsou stejné. Příkazy cyklůfor,while, ado...whilejsou stejné. Stejná klíčová slova proclassainterfacejsou v obou jazycích. Modifikátory přístupu zpublicdoprivatejsou stejné. I mnoho předdefinovaných typů používá stejná klíčová slova:int,stringadouble. - Objektově orientované paradigma: Jazyk Java i C# jsou objektově orientované jazyky. Koncepty polymorfismu, abstrakce a zapouzdření platí v obou jazycích. Oba přidali nové konstrukce, ale základní funkce jsou stále relevantní.
- Silně typované: Jak Java, tak C# jsou silně typované jazyky. Datový typ proměnných deklarujete explicitně nebo implicitně. Kompilátor vynucuje bezpečnost typů. Kompilátor zachytí chyby související s typem v kódu před spuštěním kódu.
- Multiplatformní: Java i C# jsou multiplatformní. Vývojové nástroje můžete spouštět na své oblíbené platformě. Vaše aplikace může běžet na více platformách. Vaše vývojová platforma nemusí odpovídat cílové platformě.
-
Zpracování výjimek: Java i C# vyvolává výjimky, které značí chyby. Oba používají
try-catch-finallybloky ke zpracování výjimek. Třídy výjimky mají podobné názvy a hierarchie dědičnosti. Jedním z rozdílů je, že jazyk C# nemá koncept kontrolovaných výjimek. Jakákoli metoda může (teoreticky) vyvolat jakoukoli výjimku. - Standardní knihovny: Modul runtime .NET a Java Standard Library (JSL) mají podporu pro běžné úlohy. Oba mají rozsáhlé ekosystémy pro další opensourcové balíčky. V jazyce C# je správce balíčků NuGet. Je to podobné Mavenu.
-
Garbage Collection: Oba jazyky využívají automatickou správu paměti prostřednictvím garbage collection. Runtime uvolní paměť z objektů, které nejsou referencované. Jedním z rozdílů je, že jazyk C# umožňuje vytvářet typy hodnot jako
structtypy.
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.
Deklarace proměnné a odvození typu:
// Java
var name = "Hello";
final int count = 5;
// C#
var name = "Hello";
const int count = 5;
Interpolace řetězců:
// Java
var message = "Hello, " + name + "! Count: " + count;
// C#
var message = $"Hello, {name}! Count: {count}";
Další informace: Interpolace řetězců
Výrazy lambda:
// Java
list.stream().filter(x -> x > 5).collect(Collectors.toList());
// C#
var result = list.Where(x => x > 5).ToList();
Další informace: Přehled LINQ
Zpracování nulových hodnot:
// Java
String value = optional.orElse("default");
// C#
string value = input ?? "default";
Další informace: Odkazové typy s možnou hodnotou Null
Co je známé
V jazyce C# můžete pracovat prakticky okamžitě z důvodu podobností. Při pokroku se naučíte funkce a idiomy v jazyce C#, které nejsou dostupné v Javě:
-
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. Příkaz
isVý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 povolující hodnotu null a typy nepovolující hodnotu null: C# podporuje typy hodnot povolujících hodnotu null a odkazové typy povolující hodnotu null přidání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. Nenulové odkazové typy minimalizují programovací chyby, které vyvolávají výjimku System.NullReferenceException. - Rozšíření: V jazyce C# můžete vytvářet členy, které rozšiřují třídu nebo rozhraní. Rozšíření poskytují nové chování pro typ z knihovny nebo všechny typy, které implementují dané rozhraní.
- LINQ: Jazyk integrovaný dotaz (LINQ) poskytuje běžnou syntaxi pro dotazování a transformaci dat bez ohledu na jejich úložiště.
- Místní funkce: V jazyce C# můžete vnořit funkce uvnitř metod nebo jiných místních funkcí. Místní funkce poskytují další vrstvu zapouzdření.
Návod
Další informace o systému typů jazyka C#, včetně structclasszáznamů a rozhraní, najdete v přehledu systému typů v části Základy.
V jazyce C# existují další funkce, které nejsou v Javě. Funkce jako async a await modelují asynchronní operace v sekvenční syntaxi. Příkaz using automaticky uvolní prostředky, které nesouvisí s pamětí.
Mezi C# a Javou existují také některé podobné funkce, které mají drobné, ale důležité rozdíly:
-
Vlastnosti a indexery: Obě vlastnosti a indexery (zachází s třídou jako s polem nebo slovníkem) mají podporu jazykem. V Javě se jedná o zásady vytváření názvů pro metody začínající na
getaset. -
Záznamy: V jazyce C# můžou být záznamy typu
class(odkaz) nebostruct(hodnota). Záznamy jazyka C# můžou být neměnné, ale nemusí být neměnné. - N-tice mají v jazycích C# a Java jinou syntaxi.
- Atributy jsou podobné poznámkám Java.
A konečně existují funkce jazyka Java, které nejsou dostupné v jazyce C#:
- Zaškrtnuté výjimky: V jazyce C# by jakákoli metoda teoreticky mohla vyvolat jakoukoli výjimku.
- Kontrola kovariance pole: V jazyce C# nejsou pole bezpečně kovariantní. Pokud potřebujete kovariantní struktury, měli byste použít obecné třídy a rozhraní kolekce.
Celkově by mělo být učení jazyka C# pro vývojáře, který má zkušenosti s Javou, hladký. Jazyk C# má dostatek známých idiomů, abyste mohli být produktivní, když se naučíte nové idiomy.
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í.