Подтвердить что ты не робот

Зачем использовать readonly в С#

Возможный дубликат:
В чем преимущества маркировки поля как readonly в С#?

Я всегда использовал ключевое слово readonly в С# в ситуациях, когда я знаю, мне нужно будет только установить ссылку на объект один раз (например, соединение службы WCF на странице ASP.NET). Помимо простого обеспечения объектов не может быть установлено более одного раза, каковы преимущества использования readonly над стандартной ссылкой, например, частной или частной статикой? Это кажется расплывчатым. Имеются ли последствия для работы?

4b9b3361

Ответ 1

Отличия в производительности в сторону, я бы сказал, что большое преимущество заключается в том, что вы предоставляете полезную информацию о том, что такое переменная и для чего она используется (edit: это имеет еще большую ценность, когда кто-то другой берет на себя обслуживание ваш код...)

Кроме того, как вы сказали, это мешает кому-то переписывать то, что вы хотели быть постоянным значением. Я считаю, что это само по себе является достаточным оправданием для его использования...

Ответ 2

readonly существует исключительно для того, чтобы кто-либо случайно или намеренно не изменял значение переменной после ее установки. Он применяется во время выполнения.

const аналогичен, но применяется во время компиляции. Таким образом, значение должно быть установлено во время создания переменной.

Любой из них может быть объединен с другими модификаторами, такими как public, private или static.

Ответ 3

Поле A readonly может быть задано только при инициализации поля или в конструкторе. Это дает значительную выгоду для текущего обслуживания, потому что вы можете быть уверены, что оно было установлено, когда объект был создан и не изменен с другим объектом. Отсутствие выгоды от производительности.

Вообще говоря, вы не должны отмечать поле изменяемого типа как прочитанное только потому, что сам объект может быть впоследствии изменен. FxCop определяет для этого правило предупреждения - http://msdn.microsoft.com/en-us/library/ms182302(v=vs.120).aspx

Ответ 4

Ясность цели и использования, по-видимому, является лучшей причиной для использования readonly. Хотя вы можете утверждать, что вы можете оставить запись просто потому, что она еще не защищена и не нужна.

Ответ 5

Просто помните, что, хотя ref не может быть изменен для readonly, если объект изменен, состояние объекта все равно может быть изменено (т.е. элементы, добавленные в список)