Udostępnij za pośrednictwem


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:

  1. 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, elseswitch , są takie same. Instrukcje iteracyjne for, while i do...while są takie same. Te same słowa kluczowe dla class i interface znajdują się w obu językach. Modyfikatory dostępu z public do private są takie same. Nawet wiele typów wbudowanych używa tych samych słów kluczowych: int, i stringdouble.
  2. Paradygmat zorientowany obiektowo: Języki Java i C# są językami obiektowymi. Koncepcje polimorfizmu, abstrakcji i hermetyzacji mają zastosowanie w obu językach. Obydwa dodały nowe konstrukcje, ale podstawowe funkcje są nadal istotne.
  3. 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.
  4. 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. Twoja platforma programistyczna nie musi odpowiadać platformie docelowej.
  5. Obsługa wyjątków: Zarówno java, jak i C# zgłaszają wyjątki wskazujące błędy. Oba korzystają z bloków 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) rzucić wyjątek.
  6. 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.
  7. Odzyskiwanie pamięci: oba języki wykorzystują automatyczne zarządzanie pamięcią za pośrednictwem odzyskiwania pamięci. Środowisko uruchomieniowe odzyskuje pamięć zajmowaną przez obiekty, które nie są referencjonowane. Jedną z różnic jest to, że język C# umożliwia tworzenie typów wartości jako typów struct.

Możesz pracować wydajnie 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:

  1. 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 "jest" zgodna z pewnym wzorcem. Wyrażenieswitch wzorcu zapewnia bogatą składnię do sprawdzania zmiennej i podejmowania decyzji na podstawie jej cech.
  2. Interpolacja ciągów i surowe 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.
  3. 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 sprawdzisz null przed wyłuszczeniem wyrażenia. W przypadku typów nieprzyjmujących wartości null kompilator ostrzega, jeśli możesz przypisać wartość null do tej zmiennej. Typy referencyjne nieakceptujące wartości null minimalizują błędy programowania, które zgłaszają błąd System.NullReferenceException.
  4. Rozszerzenia: w języku C#można tworzyć elementy członkowskie rozszerzające klasę lub interfejs. Rozszerzenia zapewniają nowe zachowanie dla typu z biblioteki lub wszystkich typów, które implementują dany interfejs.
  5. 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.
  6. 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. Funkcje takie jak async i await modelują operacje asynchroniczne w składni sekwencyjnej. Instrukcja using automatycznie zwalnia zasoby inne niż pamięć.

Istnieją również pewne podobne funkcje między językami C# i Java, które mają subtelne, ale ważne różnice:

  1. 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 i set.
  2. Rekordy: w języku C#rekordy mogą być typami class (odwołanie) lub struct (wartość). Rekordy języka C# mogą być niezmienne, ale nie muszą być niezmienne.
  3. Krotki mają inną składnię w językach C# i Java.
  4. 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#:

  1. Sprawdzone wyjątki: w języku C#dowolna metoda może teoretycznie zgłosić wyjątek.
  2. Sprawdzona kowariancja tablic: 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. Język C# ma wystarczająco dużo znanych idiomów, aby być produktywnym, gdy nauczysz się nowych idiomów.