是否可以在没有属性体的情况下设置默认值?最好带注释.
[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;
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ted 41
不,没有内置功能可以使用元数据设置属性的值.您可以使用某种类型的工厂来构建具有反射的类的实例,然后可以设置默认值.但简而言之,您需要使用构造函数(或字段设置器......将其提升到构造函数.)设置默认值.
如果你的constuctor有几个重载,你可能想看一下构造函数链.
使用C#6+你可以做这样的事......
public string MyValue { get; set; } = "My Default";
Run Code Online (Sandbox Code Playgroud)
哦,它变得更有趣,因为人们甚至要求这样的东西......
// this code won't compile!
public string MyValue {
private string _myValue;
get { return _myValue ?? "My Default"; }
set { _myValue = value; }
}
Run Code Online (Sandbox Code Playgroud)
...优点是您可以控制字段的范围,只能在属性代码中访问,这样您就不必担心在不使用getter/setter的情况下在类中使用状态的任何其他内容.
Jor*_*ira 16
在类构造函数中指定默认属性值.
class MyClass
{
public MyClass()
{
IsTrue = true;
IsFalse = false;
}
public bool IsTrue { get; set; }
public bool IsFalse { get; set; }
[...]
public void Something()
{
var isTrue = this.IsTrue;
var isFalse = this.IsFalse;
}
Run Code Online (Sandbox Code Playgroud)
}
如果您使用的是C#5及更早版本,则必须在构造函数中执行此操作.
但是从C#6.0开始,包含了自动属性初始值设定项的功能,语法为:
public int myage { get; set; } = 33;
Run Code Online (Sandbox Code Playgroud)
旧线程.看起来像微软听说过这个功能在.Net Framework 4.6+(C#6+)中可用.你可以像使用它一样使用它
public string MyValue { get; set; } = "My Default";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
41483 次 |
最近记录: |