Istnieje słowo kluczowe readonly
w języku C#, ale do tej pory możemy zastosować je tylko do pól, a nie do lokalnych lub parametrów.
Często w Javie słowo kluczowe final
jest zwykle używane jako styl, aby ułatwić zamykanie wartości w anonimowych klasach wewnętrznych. Ale ten problem nie istnieje w języku C#, ponieważ anonimowe metody/lambdy mogą zamykać nad modyfikowanymi zmiennymi.
Narzędzia takie jak Resharper mogą wyświetlać zmutowane zmienne/parametry w innym kolorze, dzięki czemu można szybko zobaczyć "komplikacje" w swojej metodzie. Używam go, aby zmutowane nazwy świeciły pogrubioną zieloną czcionką lub coś w tym stylu!
Nie oznacza to, że samo C# nie ulegnie poprawie dzięki wielu dodatkowym funkcjom, takim jak powszechnie stosowane readonly
, które pomagają w zadeklarowanej niezmienności. Ale jeśli masz krótkie metody i Resharper, aby podkreślić rzeczy dla ciebie, to nie musisz ręcznie zadeklarować rzeczy jako final/readonly/const (w zależności od języka). IDE śledzi to za Ciebie.
Ma to więcej sensu: jak odkryli programiści Java, większość "zmiennych" nie jest wcale zmiennymi. Ale jeśli musisz o tym zadeklarować, dodając do wszystkiego final
, w kodzie jest dużo dodatkowego szumu kluczowego. Bardziej sensowne byłoby domyślne ustawienie final
i posiadanie słowa kluczowego, które sprawiłoby, że rzeczy byłyby mutable
. Tak to działa w F #.
dlaczego nie próbujesz z słowem kluczowym const – KhanS
@KahnS - ponieważ użycie tego w parametrze funkcji nie spowoduje nawet kompilacji. – Oded
Gdybym został zapytany, jaka funkcja C++ tęsknię najbardziej w C#, byłoby to metody i parametry const. – Gorpik