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 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, elseswitch jsou stejné. Příkazy cyklů for, while, a 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ě 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.
  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 - 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.
  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. 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 struct typy.

V jazyce C# můžete pracovat prakticky okamžitě z důvodu podobností. 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 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ů. Surové řetězcové literály poskytují způsob, jak minimalizovat escape sekvence v textu.
  3. 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 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ávají výjimku System.NullReferenceException.
  4. 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í.
  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ě. Funkce jako async a await modelují asynchronní operace v sekvenční syntaxi. Příkaz using automaticky uvolní nepaměťové 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 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 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. N-tice mají v jazycích 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ý. Jazyk C# má dostatek známých idiomů, abyste mohli být produktivní, když se naučíte nové idiomy.