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

実際のバッキングフィールドを使用してプロパティを作成することは、VisualStudioスニペットではそれほど大きな問題ではありません。propVSと入力してTabキーを押すと、読み取り/書き込みプロパティの完全なスニペットが取得されます。

[編集]このスレッドもチェックしてください:C#自動プロパティにデフォルト値を与えるにはどうすればよいですか?

[さらに別の編集]これで読みやすくなると思われる場合は、次のリンクを確認してください。これは、必要なバッキングフィールドを含むプロパティを生成し、その#region周囲にブロックを自動的に追加してコードを折りたたむget / setスニペットです:Snippets CodePlexで(Omer van Kloetenによる)。ダウンロードして Get+Set Property (prop)スニペットを確認してください。

于 2009-11-01T17:08:55.080 に答える
0

現在はありません。現在のところ、唯一のオプションは、コンストラクターでこれを設定するか、バッキングフィールドを持つプロパティを使用することです。

ただし、PostSharpを使用すると、AOPを介してこれをかなり簡単に実装できます。(ただし、これが現在のオプションではないと思います)。

于 2009-11-01T17:21:59.187 に答える