automatic property with default value
Possible Duplicate:
How do you give a C# Auto-Property a default value?
有没有更好的方法为自动属性提供默认值?
如果没有明确设置,我希望它是5。你知道一个简单的方法吗?例如,我可以将它设置在构造器或其他东西中,但这并不优雅。
更新:c 6得到了它:http://geekswithblogs.net/winaz/archive/2015/06/30/whatrsquos-new-in-c-6.0-auto-property-initializers.aspx
不,没有任何好的方法可以做到这一点——基本上你必须把它设置在构造器中,这是不愉快的。
像这样的自动属性有很多限制-我最大的抱怨是没有一种方法可以创建只读自动属性,该属性可以在构造函数中设置,但不能在其他任何地方设置(并由只读字段支持)。
最好的方法是在构造函数中设置它,不能在自动属性中进行更改,需要一个支持字段,否则自己实现setter/getter。
使用支持字段可以编写如下内容:
1 2 | private int _howHigh = 0; public int HowHigh { get {return _howHigh; } set { _howHigh = value; } } |
如果类型的默认值不够,那么唯一的方法是通过构造函数。
总之:没有。
自动属性是一个技巧小马,一旦你需要额外的东西(如一个合理的默认值),你应该恢复到支持字段常规属性。
我是一个Resharper用户,它使从自动到支持的属性变得轻而易举。
构造函数不是您拥有的唯一选项。
我相信这是最好的:
1 2 3 4 5 | private int m_HowHigh = 5; public int HowHigh { get { return m_HowHigh; } set { m_HowHigh = value; } } |
我更喜欢它用于可读性目的,而不是ctor()。
这不是你想要的:
1 2 | [DefaultValue(5)] public int HowHigh { get; set; } |
参考:http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx y248
因为这只是一个装饰,不设置值(在C 4中)。