2010-01-15 10 views
13

Powiel możliwe:
What is the equivalent of Java’s final in C#?Czy są jakieś różnice funkcjonalne między C# uszczelnione i ostateczne słowo kluczowe Java?

W Javie końcowy odnosi się do więcej niż tylko klasy.

Tak, zastanawiam się: czy jest jakaś funkcjonalna różnica między tymi dwoma słowami kluczowymi?

Dziękuję i przepraszam za stosunkowo noob pytanie.

Szybkie wyszukiwanie w Google nie spełniło moich potrzeb.

+3

dup: http://stackoverflow.com/questions/1327544/what-is-t-equivalent-of-javas-final-in-c –

+0

dlaczego po prostu nie porównasz dokumentacji? –

+1

RTFM, huh. Cóż, zamknijmy to Q spokojnie. Dziękuję wam wszystkim! Musiałem wybrać jedną odpowiedź jako zaakceptowaną. –

Odpowiedz

23

Java jest równoznaczne z C# 's sealed, readonly i sealed słów kluczowych.

dwóch z tych trzech są nieco inne w Java i C#:

W Javie, metody są wirtualne domyślnie, więc każda metoda może być uznana final aby zapobiec jego nadpisane. W języku C# metody nie są domyślnie wirtualne, więc można zastąpić tylko jedną z metod: sealed (Aby zapobiec dalszemu nadpisywaniu)

W języku Java dowolną zmienną lub pole można oznaczyć jako final, aby zapobiec zmianie po inicjalizacja (I, dla pól, poza konstruktorem). W języku C# pola mogą być zadeklarowane jako readonly, dla dokładnie tego samego efektu, ale zmienne lokalne nie mogą. Zauważ, że Java nie ma odpowiednika słowa kluczowego C# 's const. (const s w C# są oceniane w czasie kompilacji, a wartości są zakodowane zamiast odwoływać)

Dla klas, C# 's sealed klas i final klas Javy są dokładnie takie same (AFAIK).

+0

@Matthew: To nie była literówka. C# ma dwa różne zastosowania słowa kluczowego "zapieczętowane". W VB są one 'NotInheritable' i' NotOverridable' – SLaks

+1

Uważam, że odpowiedź jest nieco myląca, dlatego pomyślałem, że to literówka. 'zapieczętowane' to jedno słowo kluczowe o wielu znaczeniach kontekstowych (np. wiele słów kluczowych, w tym' final', 'default',' using', itp.). C# 'const' jest używane w wielu miejscach, w których Java używał' statycznego finału'; dlatego uważam, że powinien być wymieniony na szczycie jako jeden z odpowiedników. –

+0

@Matthew: ** Nie **. "const" w języku C# _nie jest równoważne "statycznemu finałowi". – SLaks

Powiązane problemy