2

我需要这样

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};

但我只需要属性。

4

2 回答 2

6

不,但您可以在无参数构造函数中轻松初始化它们。

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 片段创建具有实际支持字段的属性并不是什么大问题。通过输入propVS 并Tab按下键,您可以获得读/写属性的完整片段。

[编辑]也检查这个线程:你如何给 C# 自动属性一个默认值?

[另一个编辑]如果您认为这会使其更具可读性,请检查以下链接:它是一个 get/set 片段,它将生成具有必要支持字段的属性,并自动在其#region周围添加一个块以折叠代码:片段在 CodePlex(由 Omer van Kloeten 撰写)。下载它并检查 Get+Set Property (prop)代码段。

于 2009-11-01T17:08:55.080 回答
0

不是现在。现在,唯一的选择是在构造函数中设置它,或者使用带有支持字段的属性。

但是,您可以使用PostSharp通过 AOP 相当轻松地实现这一点。(虽然,我不认为这是目前的一种选择)。

于 2009-11-01T17:21:59.187 回答