Поле инициализации по умолчанию является избыточным - PullRequest
13 голосов
/ 06 ноября 2008

Могу ли я действительно доверять .NET для инициализации полей (например, целых, структур и т. П.)? А что, если я все еще хочу инициализировать эти поля - что может быть в результате?

Ответы [ 2 ]

18 голосов
/ 06 ноября 2008

В спецификации C # указано на стр.305 (17.4.4)

Начальное значение поля, будь то статическое поле или поле экземпляра, является значением по умолчанию (§12.2) тип поля. Невозможно наблюдать значение поля до того, как произойдет инициализация по умолчанию, и поэтому поле никогда не является «неинициализированным».

12 голосов
/ 06 ноября 2008

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

Делайте все, что способствует большей читабельности вашей конкретной кодовой базы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...