簡體   English   中英

如何在同一個類的靜態List屬性中添加類的對象?

[英]How to add the objects of a class in a static List property of same class?

我有一個A類,它有2個普通屬性(字符串屬性)和1個靜態屬性(A類型列表)。 在構造函數中創建類A的新實例時,我想在靜態列表屬性中添加該實例。 我有兩個問題。

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( ) {
}

}

1 - 有可能嗎?

是。

2 - 如果可能的話,我該如何實施。

在靜態構造函數中初始化列表

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

然后在實例構造函數中添加實例

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

您必須在聲明或靜態構造函數中創建列表。

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#編程指南)

是的,它可以在factoryMethod實現

在此類中,添加此方法以用於創建新實例並將其添加到list -set約束器中以將其添加到private

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

如果你想在任何地方從這個類創建實例:

A ins = A.CreateInstance ()

對於除List之外的其他類型將正常工作。 對於List,您必須執行以下操作:

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

AList.Add(this); 在構造函數中應該將正在構造的對象實例添加到列表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM