Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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. Instrukcje iteracyjnefor
,while
ido
...while
są takie same. Te same słowa kluczowe dlaclass
iinterface
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. Obydwa dodały 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. Twoja platforma programistyczna nie musi odpowiadać platformie docelowej.
-
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. - 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ęć 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:
-
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. - 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.
-
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 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. - 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.
- 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. 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:
-
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.
- 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.