Plán výuky jazyka C pro vývojáře v Javě#
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 jazyk C# už můžete číst a rozumět jim. 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
,else
switch
jsou stejné. Příkazy smyčkyfor
,while
ado
...while
jsou stejné. Stejná klíčová slova proclass
ainterface
jsou v obou jazycích. Modifikátory přístupu zpublic
doprivate
jsou stejné. Dokonce i mnoho předdefinovaných typů používá stejná klíčová slova:int
,string
adouble
. - 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é typy: Jazyk Java i C# jsou jazyky silného typu. 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
finally
bloky 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.
- Uvolňování paměti: Oba jazyky využívají automatickou správu paměti prostřednictvím uvolňování paměti. Modul runtime uvolní paměť z objektů, na které se neodkazují. Jedním z rozdílů je, že jazyk C# umožňuje vytvářet typy hodnot jako
struct
typy.
V jazyce C# budete produktivní téměř okamžitě kvůli podobnostem. Při pokroku byste se měli naučit 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
is
zkontroluje, jestli je nějaká proměnná "is". Výraz založený naswitch
vzorech 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ů. Nezpracované řetězcové literály poskytují způsob, jak minimalizovat řídicí 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 typů s možnou hodnotou null vás kompilátor upozorní, pokud před dereferencováním výrazu nekontrolujetenull
. U nenulových typů vás kompilátor upozorní, pokud k této proměnné možná přiřadítenull
hodnotu. Nenulové odkazové typy minimalizují programovací chyby, které vyvolá výjimku System.NullReferenceException. - Rozšiřující metody: V jazyce C# můžete vytvořit metody, které rozšiřují třídu nebo rozhraní. Rozšiřující metody rozšiřují chování typu 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í.
V jazyce C# existují další funkce, které nejsou v Javě. Zobrazí se funkce jako async
a await
příkazy, using
které automaticky uvolní nememory prostředky.
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 se maticí nebo slovníkem) mají podporu jazyka. V Javě se jedná o zásady vytváření názvů pro metody začínající na
get
aset
. - 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é. - Řazené kolekce členů mají v jazyce 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ý. Najdete dostatek známých idiomů pro rychlou produktivitu a naučíte se nové idiomy rychle.