如何为 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
不会影响生成的 IL,也不会读取它来将属性初始化为该值(参见 DefaultValue attribute is not working with my Auto Property)。
影响 IL 的属性示例是 ThreadStaticAttribute
, CallerMemberNameAttribute
, ...
关于c# - 为 C# 自动属性赋予初始值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40730/