Я нашел некоторое время назад (и еще раз хочу подтвердить), что если вы объявите переменную уровня класса, вы не должны вызывать его конструктор до тех пор, пока не будут вызваны конструктор или загрузка класса. Причина была в производительности - но есть ли другие причины делать или не делать этого? Существуют ли исключения из этого правила?Объявление переменных - лучшие практики
именно: это то, что я на основе того, что я думаю, что лучшая практика:
public class SomeClass
{
private PersonObject _person;
public SomeClass()
{
_person = new PersonObject("Smitface");
}
}
против:
public class SomeClass
{
private PersonObject _person = new PersonObject("Smitface");
public SomeClass()
{
}
}
Ваш комментарий на самом деле не применяется здесь. Переменные инициализируются одновременно, независимо от того, какой метод используется. – Herms 2008-10-29 18:40:22
Редактированный комментарий комментатора имеет хорошую точку - если у меня есть поле с инициализатором, я ЗНАЮ, что он будет инициализирован.Если у меня есть поле в классе с 20 конструкторами, сложнее убедиться, что переменная инициализирована до ее использования. Сообщение Эрика Липперта делает это еще более правдоподобным. – 2008-10-29 23:16:39