2013-12-12 4 views
-1

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

Мое понимание, хотя минимальное, поля только для чтения являются (и, что связано с производительностью или нет, я знаю, что FXCop и Resharper подсказывают мне использовать readonly там, где это возможно).

Я знаю, что мы не можем иметь свойство readonly в .NET, но, только что прочитанные поля по-прежнему злы?

+2

«Я знаю, что мы не можем иметь свойство readonly в .NET» - каким образом? У вас может быть свойство, у которого нет setter ... –

+0

@JonSkeet, вы говорите, что 'public string s {get ...}' обрабатывается так же, как 'private readonly string s'? Если это так, я просто удалю свой вопрос – Dave

+2

Ну, это недействительный код для начала. Но вы можете иметь 'private readonly string name; public string Name {get {return name; }} ', который является свойством readonly, поддерживаемым полем readonly. –

ответ

2

Одна из причин, по которым общественные поля являются злыми, заключается в том, что если к этому полю скомпилировано 100 других сборок, а затем вы решите заменить его на публичное свойство (чтобы включить проверку и т. Д.), Все эти сборки будут иметь также перекомпилировать.

Итак, это действительно неважно, является ли поле только для чтения или нет - общественные поля по-прежнему злые.

Смежные вопросы