Sdílet prostřednictvím


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ě:

  1. 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, elseswitch jsou stejné. Příkazy smyčky for, whilea do...while jsou stejné. Stejná klíčová slova pro class a interface jsou v obou jazycích. Modifikátory přístupu z public do private jsou stejné. Dokonce i mnoho předdefinovaných typů používá stejná klíčová slova: int, stringa double.
  2. 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í.
  3. 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.
  4. 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ě.
  5. Zpracování výjimek: Java i C# vyvolává výjimky, které značí chyby. Oba používají try - - catchfinally 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.
  6. 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.
  7. 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ě:

  1. 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ý na switch vzorech poskytuje bohatou syntaxi pro kontrolu proměnné a rozhodování na základě jejích charakteristik.
  2. 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.
  3. 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 nekontrolujete null . U nenulových typů vás kompilátor upozorní, pokud k této proměnné možná přiřadíte null hodnotu. Nenulové odkazové typy minimalizují programovací chyby, které vyvolá výjimku System.NullReferenceException.
  4. 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í.
  5. LINQ: Jazyk integrovaný dotaz (LINQ) poskytuje běžnou syntaxi pro dotazování a transformaci dat bez ohledu na jejich úložiště.
  6. 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 awaitpří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:

  1. 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 a set.
  2. Záznamy: V jazyce C# můžou být záznamy typu class (odkaz) nebo struct (hodnota). Záznamy jazyka C# můžou být neměnné, ale nemusí být neměnné.
  3. Řazené kolekce členů mají v jazyce C# a Java jinou syntaxi.
  4. Atributy jsou podobné poznámkám Java.

A konečně existují funkce jazyka Java, které nejsou dostupné v jazyce C#:

  1. Zaškrtnuté výjimky: V jazyce C# by jakákoli metoda teoreticky mohla vyvolat jakoukoli výjimku.
  2. 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.