如何为C#自动属性赋予初始值?
我要么使用构造函数,要么恢复为旧语法。
使用构造函数:
class Person { public Person() { Name = "Initial Name"; } public string Name { get; set; } }
使用常规属性语法 (带有初始值)
private string name = "Initial Name"; public string Name { get { return name; } set { name = value; } }
有没有更好的办法?
在C#5和更早版本中,要为自动实现的属性提供一个初始值,您必须在构造函数中进行设置。
从C#6.0开始,您可以内联指定初始值。语法为:
public int X { get; set; } = x; // C# 6 or higher
DefaultValueAttribute打算由VS设计人员(或任何其他使用者)用来指定默认值,而不是初始值。(即使在设计对象中,初始值也是默认值)。
DefaultValueAttribute
在编译时DefaultValueAttribute不会影响生成的IL,也不会读取它来将属性初始化为该值(请参见DefaultValue属性不适用于我的Auto Property)。
属性的例子影响IL是ThreadStaticAttribute,CallerMemberNameAttribute…
ThreadStaticAttribute
CallerMemberNameAttribute