[英]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);
}
注意:靜態構造函數不能是公共的,因為它們不能顯式調用。 在創建第一個實例或引用任何靜態成員之前會自動調用它們。
是的,它可以在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.