Harmonogram działania dla deweloperów języka Java uczących się języka C#
Języki C# i Java mają wiele podobieństw. Po zapoznaniu się z językiem C#możesz zastosować większość wiedzy, jaką masz już z programowania w języku Java:
- Podobna składnia: Języki Java i C# znajdują się w rodzinie języków C. To podobieństwo oznacza, że można już przeczytać i zrozumieć język C#. Istnieją pewne różnice, ale większość składni jest taka sama jak Java i C. Znane są nawiasy klamrowe i średniki. Instrukcje sterujące, takie jak
if
,else
switch
, są takie same. Instrukcjefor
pętli ,while
ido
...while
są takie same. Te same słowa kluczowe iclass
interface
znajdują się w obu językach. Modyfikatory dostępu zpublic
doprivate
są takie same. Nawet wiele typów wbudowanych używa tych samych słów kluczowych:int
, istring
double
. - Paradygmat zorientowany obiektowo: Języki Java i C# są językami obiektowymi. Koncepcje polimorfizmu, abstrakcji i hermetyzacji mają zastosowanie w obu językach. Oba dodano nowe konstrukcje, ale podstawowe funkcje są nadal istotne.
- Silnie typizowane: Języki Java i C# są silnie typizowane. Typ danych zmiennych można zadeklarować jawnie lub niejawnie. Kompilator wymusza bezpieczeństwo typu. Kompilator przechwytuje błędy związane z typem w kodzie przed uruchomieniem kodu.
- Międzyplatformowe: Język Java i C# są międzyplatformowe. Narzędzia programistyczne można uruchamiać na ulubionej platformie. Aplikacja może działać na wielu platformach. Platforma deweloperów nie jest wymagana do dopasowania platformy docelowej.
- Obsługa wyjątków: Zarówno java, jak i C# zgłaszają wyjątki wskazujące błędy. Oba bloki służą
try
- -catch
finally
do obsługi wyjątków. Klasy wyjątków mają podobne nazwy i hierarchie dziedziczenia. Jedną z różnic jest to, że język C# nie ma pojęcia sprawdzonych wyjątków. Każda metoda może (teoretycznie) zgłaszać wyjątek. - Biblioteki standardowe: środowisko uruchomieniowe platformy .NET i biblioteka Java Standard Library (JSL) obsługują typowe zadania. Oba mają rozbudowane ekosystemy dla innych pakietów open source. W języku C# menedżer pakietów to NuGet. Jest to analogiczne do Maven.
- Odzyskiwanie pamięci: oba języki wykorzystują automatyczne zarządzanie pamięcią za pośrednictwem odzyskiwania pamięci. Środowisko uruchomieniowe odzyskuje pamięć z obiektów, do których nie odwołuje się odwołanie. Jedną z różnic jest to, że język C# umożliwia tworzenie typów wartości jako
struct
typów.
Będziesz produktywny w języku C# niemal natychmiast ze względu na podobieństwa. W miarę postępu należy nauczyć się funkcji i idiomów w języku C#, które nie są dostępne w języku Java:
- Dopasowywanie wzorca: Dopasowywanie wzorca umożliwia zwięzłe instrukcje warunkowe i wyrażenia na podstawie kształtu złożonych struktur danych. Instrukcja
is
sprawdza, czy zmienna "is" ma jakiś wzorzec. Wyrażenie oparte naswitch
wzorcu zapewnia bogatą składnię do sprawdzania zmiennej i podejmowania decyzji na podstawie jej cech. - Interpolacja ciągów i nieprzetworzone literały ciągów: interpolacja ciągów umożliwia wstawianie obliczonych wyrażeń w ciągu zamiast używania identyfikatorów pozycyjnych. Nieprzetworzone literały ciągu umożliwiają zminimalizowanie sekwencji ucieczki w tekście.
- Typy dopuszczające wartości null i inne niż null: język C# obsługuje typy wartości dopuszczających wartość null i typy referencyjne dopuszczające wartość null przez dołączenie sufiksu
?
do typu. W przypadku typów dopuszczających wartość null kompilator wyświetli ostrzeżenie, jeśli nie sprawdzisznull
przed wyłuszczeniem wyrażenia. W przypadku typów innych niż null kompilator ostrzega, czy możesz przypisaćnull
wartość do tej zmiennej. Typy referencyjne bez wartości null minimalizują błędy programowania, które zgłaszają błąd System.NullReferenceException. - Metody rozszerzeń: w języku C#można tworzyć metody rozszerzające klasę lub interfejs. Metody rozszerzeń rozszerzają zachowanie typu z biblioteki lub wszystkich typów implementujących dany interfejs.
- LINQ: Zapytanie zintegrowane z językiem (LINQ) udostępnia wspólną składnię do wykonywania zapytań i przekształcania danych, niezależnie od jego magazynu.
- Funkcje lokalne: W języku C#można zagnieżdżać funkcje wewnątrz metod lub innych funkcji lokalnych. Funkcje lokalne zapewniają kolejną warstwę hermetyzacji.
W języku C# istnieją inne funkcje, które nie znajdują się w języku Java. Zobaczysz funkcje takie jak async
i await
i i instrukcje using
, aby automatycznie zwalniać zasoby inne niż zasoby.
Istnieją również pewne podobne funkcje między językami C# i Java, które mają subtelne, ale ważne różnice:
- Właściwości i indeksatory: Zarówno właściwości, jak i indeksatory (traktując klasę jak tablica lub słownik) mają obsługę języka. W języku Java są to konwencje nazewnictwa metod rozpoczynających się od
get
iset
. - Rekordy: w języku C#rekordy mogą być typami
class
(odwołanie) lubstruct
(wartość). Rekordy języka C# mogą być niezmienne, ale nie muszą być niezmienne. - Krotki mają inną składnię w językach C# i Java.
- Atrybuty są podobne do adnotacji języka Java.
Na koniec istnieją funkcje języka Java, które nie są dostępne w języku C#:
- Sprawdzone wyjątki: w języku C#dowolna metoda może teoretycznie zgłosić wyjątek.
- Wariancja zaznaczonej tablicy: w języku C#tablice nie są bezpiecznie kowariantne. Jeśli potrzebujesz kowariantnych struktur kolekcji, należy użyć ogólnych klas kolekcji i interfejsów.
Ogólnie rzecz biorąc, uczenie języka C# dla dewelopera doświadczonych w języku Java powinno być płynne. Znajdziesz wystarczająco dużo znanych idiomów, aby szybko być produktywne i nauczysz się nowych idiomów szybko.