1

C# 自動プロパティを使用して、オブジェクトの新しいインスタンスを作成することは可能ですか?

C#でこれを行う方法が大好きです:

public string ShortProp {get; set;}

最初にインスタンス化する必要がある List のようなオブジェクトに対してこれを行うことは可能ですか?

すなわち:

List<string> LongProp  = new List<string>(); 
public List<string> LongProp {  
    get {  
        return LongProp ;  
    }  
    set {  
         LongProp  = value;  
    }  
}
4

5 に答える 5

8

コンストラクターでバッキング フィールドを初期化できます。

public class MyClass {
    public List<object> ClinicalStartDates {get; set;}
    ...
    public MyClass() {
        ClinicalStartDates = new List<object>();
    }
}

しかし...このリストをパブリックセッターを持つプロパティにすることを確信していますか? あなたのコードはわかりませんが、クラスのプロパティをあまり公開しない方がよいかもしれません:

public class MyClass {
    public List<object> ClinicalStartDates {get; private set;}
    ...
    public MyClass() {
        ClinicalStartDates = new List<object>();
    }
}
于 2009-08-13T23:36:31.627 に答える
1

コンストラクターで初期化する必要があります。

class MyClass {

  public MyClass() {
    ShortProp = "Some string";
  }

  public String ShortProp { get; set; }

}
于 2009-08-13T23:35:04.533 に答える
0

クラス定義で変数を宣言したくありません。コンストラクタで行います。

したがって、そのロジックに従って、クラスのコンストラクターで ShortProp を inlitailze できます。

于 2009-08-13T23:35:21.863 に答える
0

これを行う唯一の方法は、コンストラクターです。


public List<ClinicalStartDate> ClinicalStartDates { get; set; }

public ObjCtor()
{
   ClinicalStartDates = new List<ClinicalStartDate>;
}

それはおそらくあなたが聞きたかったことではありません。

于 2009-08-13T23:35:23.237 に答える
0

C# 3.5 は、自動プロパティの自動初期化をサポートしていません。
そうです、コンストラクターを使用する必要があります。
そして、あなたの質問は重複しいます。

于 2009-08-13T23:45:33.290 に答える