В C # есть ключевое слово readonly
, но пока мы можем применять его только к полям, а не к местным или параметрам.
Часто в Java ключевое слово final
обычно используется как вопрос стиля, чтобы упростить закрытие значений в анонимных внутренних классах. Но эта проблема не существует в C #, поскольку анонимные методы / лямбды могут закрывать изменяемые переменные.
Также такие инструменты, как Resharper, могут отображать измененные переменные / параметры в другом цвете, чтобы вы могли сразу увидеть «сложности» в вашем методе. Я использую его, чтобы мутировавшие имена загорелись жирным зеленым текстом или что-то в этом роде!
Это не означает, что сам C # не будет улучшен многими другими функциями, такими как широко применяемый readonly
, чтобы помочь с объявленной неизменностью. Но если у вас есть короткие методы и Resharper, чтобы выделить вещи для вас, то вам не нужно полностью объявлять вещи как final / readonly / const (в зависимости от языка). IDE отслеживает это для вас.
Это имеет больше смысла: как обнаружили Java-кодеры, большинство «переменных» вообще не являются переменными. Но если вам нужно объявить это, добавив final
ко всему, это лишний шум в вашем коде. Было бы более разумно, если по умолчанию будет final
и иметь ключевое слово, чтобы сделать вещи mutable
. Вот как это работает в F #.