是否有任何属性默认值初始值设定项属性?
问题描述:
我需要这样的是否有任何属性默认值初始值设定项属性?
public class AA{
public AA(){}
[Default("hi")]
public string value1{get;set}
[Default(12)]
public int value2{get;set;}
}
用法:
AA a=new AA();
print(a.value1); //result: hi
print(a.value2); //result: 12
是否有可能创造这样吗?
我知道另一种方式
Public class AA{
public AA(){value1="hi";value2=12}
...
}
否则
AA a=new AA(){value1="hi",value2=12};
但我只需要属性。
答
不,但您可以在无参数的构造函数中轻松初始化它们。
public class AA
{
public AA()
{
// default values
Value1 = "hi";
Value2 = 12;
}
public string Value1 {get;set}
public int Value2 {get;set;}
}
或者,不使用自动实现的属性,而是使用具有初始化为默认值的支持字段的实际属性。
public class AA
{
private string _value1 = "hi";
public string Value1
{ get { return _value1; } }
{ set { _value1 = value; } }
private int _vaule2 = 12;
public int Value2
{ get { return _value2; } }
{ set { _value2 = value; } }
}
使用Visual Studio片段创建具有实际后台字段的属性并不是什么大问题。通过在VS中输入prop
并按下Tab
键,您将获得读/写属性的完整片段。
[编辑]检查这个线程也:How do you give a C# Auto-Property a default value?
[另一个编辑]如果你相信,这将使其更具可读性,请查看以下链接:这是一个get/set方法片段,这将产生该财产与必要的支持领域,并自动添加一个#region
块,以收回代码:Snippets at CodePlex(由奥马尔面包车Kloeten)。下载并检查 Get+Set Property (prop)
片段。
我的问题是我的班级有太多的属性 – ebattulga 2009-11-01 17:11:16
但是,这与属性的默认值有什么关系?如果你的班级是“一堆设置”类的班级,那么你需要有默认值。 – Groo 2009-11-01 17:18:46