Возможный дубликат:
Инициализировать поля класса в конструкторе или объявлении?
Мы спорим о практике кодирования. Примеры здесь немного слишком просты, но в реальной сделке есть несколько конструкторов. Чтобы инициализировать простые значения (например, даты до их значения min), я переместил код из конструкторов и в определения полей.
public class ConstructorExample
{
string _string = "John";
}
public class ConstructorExample2
{
string _string;
public ConstructorExample2()
{
_string = "John";
}
}
Как это должно быть сделано книгой? Я склонен к тому, чтобы быть в любом случае, и, может быть, немного слабее в этом. Однако я чувствую, что окклюзионная бритва говорит мне переместить инициализацию из нескольких конструкторов. Конечно, я всегда мог перенести эту общую инициализацию в частный метод.
Вопрос в основном... инициализирует поля, в которых они определены, в отличие от конструктора, каким-либо образом?
Аргумент, с которым я столкнулся, является обработкой ошибок, но я не считаю его актуальным, поскольку нет возможных исключений, которые не будут отобраны во время компиляции.