2012-10-31 37 views
2

我有一個類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() { 
} 

}

+0

那麼當你調試代碼並運行它會發生什麼..你得到預期的結果,你正在尋找..?如果沒有,那就報告任何給定的錯誤..! – MethodMan

+0

您能否請您說明您在創建「A類的新實例,在構造函數中...在靜態列表屬性中添加該實例」時遇到了什麼問題?目前還不清楚你在尋找什麼樣的幫助。 –

回答

8

1 - 這可能嗎?

是的。

2 - 如果可能,那我該如何實現。

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

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

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

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

謝謝,它的工作.......... – User1551892

1

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

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

注:靜態構造函數不能是公共的,因爲它們不能被顯式調用。它們在創建第一個實例或引用任何靜態成員之前自動調用。

Static Constructors (C# Programming Guide)

0

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

+0

謝謝,它的工作........... – User1551892

1

是其可能的,你可以實現它裏面factoryMethod

這個類裏面,添加此方法用於創建一個新的實例,並將其添加到列表中-set constractor私人

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

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

A ins = A.CreateInstance() 
0

對於除列表之外的其他類型將工作正常。對於列表你必須做到以下幾點:

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