Ответ 1
Если значение по умолчанию для типа недостаточно, то единственный способ сделать это - через конструктор.
Возможный дубликат:
Как вы присвоите С# Auto-Property значение по умолчанию?
Есть ли хороший способ предоставить значение по умолчанию для автоматического свойства?
public int HowHigh { get; set; } // defaults to 0
Если я не установлен явно нигде, я хочу, чтобы это было 5. Знаете ли вы простой способ для этого? Например. Я мог бы установить его в конструкторе или что-то в этом роде, но это не изящно.
UPDATE: С# 6 получил: http://geekswithblogs.net/WinAZ/archive/2015/06/30/whatrsquos-new-in-c-6.0-auto-property-initializers.aspx
Если значение по умолчанию для типа недостаточно, то единственный способ сделать это - через конструктор.
Нет, нет хорошего способа сделать это - в основном вы должны установить его в конструкторе, что не нравится.
Существуют различные ограничения для таких автоматических свойств, как это: моя самая большая проблема заключается в том, что не существует способа создать автоматическое свойство только для чтения, которое может быть установлено в конструкторе, но нигде (и не поддерживается полем readonly).
Лучшее, что вы можете сделать, это установить его в конструкторе, вы не можете вносить изменения в автоматические свойства, вам понадобится резервное поле и в противном случае реализовать установщик/получатель.
Используя фоновое поле, вы можете написать примерно следующее:
private int _howHigh = 0;
public int HowHigh { get {return _howHigh; } set { _howHigh = value; } }
Одним словом: Нет.
Автоматические свойства - это один трюк-пони, как только вам потребуется что-то дополнительное (например, разумное значение по умолчанию), вы должны вернуться к регулярным свойствам поля поддержки.
Я пользователь Resharper, и он делает переход от автоматического к поддерживаемым свойствам легким.
Конструктор НЕ является единственным вариантом, который у вас есть.
Я считаю, что это лучше всего:
private int m_HowHigh = 5;
public int HowHigh {
get { return m_HowHigh; }
set { m_HowHigh = value; }
}
Я предпочитаю это для целей удобочитаемости больше, чем ctor().
Это НЕ то, что вы хотите:
[DefaultValue(5)]
public int HowHigh { get; set; }
Ссылка: http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx#Y2248
Потому что это только украшение и не устанавливает значение (в С# 4).