是否可以在没有属性主体的情况下设置默认值?最好有注释。
[SetTheDefaultValueTo(true)]
public bool IsTrue { get; set; }
[SetTheDefaultValueTo(false)]
public bool IsFalse { get; set; }
public void Something()
{
var isTrue = this.IsTrue;
var isFalse = this.IsFalse;
}
最佳答案
不,没有内置方法可以使用元数据设置属性值。您可以使用某种工厂来构建具有反射的类的实例,然后可以设置默认值。但简而言之,您需要使用构造函数(或字段 setter ,被提升到构造函数)来设置默认值。
如果您的构造函数有多个重载,您可能需要查看 constructor chaining .
使用 C# 6+,你可以做这样的事情......
public string MyValue { get; set; } = "My Default";
哦,它变得更有趣了,因为人们甚至要求这样的东西......
// this code won't compile!
public string MyValue {
private string _myValue;
get { return _myValue ?? "My Default"; }
set { _myValue = value; }
}
...优点是您可以控制字段的范围,使其只能在属性代码中访问,这样您就不必担心类中的其他任何事情在不使用 getter/setter 的情况下使用状态.
关于c# - 为属性设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3071359/