5

クラス A があり、2 つの通常のプロパティ (文字列プロパティ) と 1 つの静的プロパティ (A の型のリスト) があります。コンストラクターでクラス A の新しいインスタンスを作成するときに、そのインスタンスを静的リスト プロパティに追加したいと考えています。2 つの質問があります。

1-可能ですか?

2-可能であれば、どのように実装できますか。

私は次のコードを使用しています:

public class A {
private string _property1;
private string _property2;
private static List<A> _AList;

public string Property1 {
  get { return _property1; }
  set { _property1 = value; }
}

public string Property2 {
  get { return _property2; }
  set { _property2 = value; }
}

public static List<A> AList {
  get { return _AList; }
  set { _AList = value; }
}
public A( ) {
}

}

4

5 に答える 5

10

1-それは可能ですか?

はい。

2-可能であれば、どのように実装できますか。

静的コンストラクターでリストを初期化します

static A() {
    AList = new List<A>();
}

次に、インスタンスコンストラクターにインスタンスを追加します

public A( ) {
    A.AList.Add(this);
}
于 2012-10-31T16:27:27.230 に答える
2

リストは、宣言または静的コンストラクターのいずれかで作成する必要があります。

private static List<A> _AList = new List<A>();

また

private static List<A> _AList;

static A()
{
    _AList = new List<A>();
}

インスタンスコンストラクターで、新しいアイテムを追加できます

public A()
{
    A.AList.Add(this);
}

注:静的コンストラクターは明示的に呼び出すことができないため、パブリックにすることはできません。これらは、最初のインスタンスが作成される前、または静的メンバーが参照される前に自動的に呼び出されます。

静的コンストラクター(C#プログラミングガイド)を参照してください。

于 2012-10-31T16:28:13.707 に答える
2

リスト以外の他のタイプの場合は正常に機能します。リストの場合、次のことを行う必要があります。

public static List<A> AList {
 get { 
       if(_AList == null) _AList = new List<A>();
       return _AList; 
     }
 set { _AList = value; }
}
于 2015-11-16T08:53:35.853 に答える
1

はい、可能です。内部に実装できますfactoryMethod

このクラス内で、新しいインスタンスの作成に使用するこのメソッドを追加し、リストに追加します - コンストラクターをプライベートに設定します

public static A CreateInstance ()
{
     A instance = new A();
     if(AList==null)
       AList = new List<A>();
     AList.add(instance);  
     return A;
}

そして、このクラスからどこかにインスタンスを作成したい場合:

A ins = A.CreateInstance ()
于 2012-10-31T16:42:55.120 に答える
0

AList.Add(this);コンストラクターで、構築中のオブジェクト インスタンスをリストに追加する必要があります。

于 2012-10-31T16:29:02.290 に答える