C# 如何在同一类的静态列表属性中添加类的对象?

C# 如何在同一类的静态列表属性中添加类的对象?,c#,properties,static,C#,Properties,Static,我有一个类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 {

我有一个类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( ) {
}
公共A类{
私有字符串_属性1;
私有字符串_property2;
私有静态列表;
公共字符串属性1{
获取{return\u property1;}
设置{u property1=value;}
}
公共字符串属性2{
获取{return\u property2;}
设置{u property2=value;}
}
公共静态列表列表{
获取{return\u AList;}
设置{u AList=value;}
}
公共A(){
}
}

1-可能吗

2-如果可能,我如何实施

在静态构造函数中初始化列表

static A() {
    AList = new List<A>();
}
public A( ) {
    A.AList.Add(this);
}

必须在声明或静态构造函数中创建列表

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

注意:静态构造函数不能是公共的,因为它们不能被显式调用。在创建第一个实例或引用任何静态成员之前,会自动调用它们


参见

AList.Add(本)应将正在构造的对象实例添加到列表中

是的,这是可能的,您可以在
factoryMethod

在该类中,添加此方法以用于创建新实例,并将其添加到列表集constractor to private

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

对于除列表以外的其他类型,将可以正常工作。对于列表,您必须执行以下操作:

public static List<A> AList {
 get { 
       if(_AList == null) _AList = new List<A>();
       return _AList; 
     }
 set { _AList = value; }
}
公共静态列表列表{
获取{
如果(_AList==null)_AList=new List();
返回列表;
}
设置{u AList=value;}
}

那么,调试代码并运行它时会发生什么情况呢。。你得到你想要的结果了吗。。?如果没有,则报告任何给定错误。。!您能否说明“在构造函数中创建类a的新实例…在静态列表属性中添加该实例”时遇到的问题?现在还不清楚你在寻求什么样的帮助。
public static A CreateInstance ()
{
     A instance = new A();
     if(AList==null)
       AList = new List<A>();
     AList.add(instance);  
     return A;
}
A ins = A.CreateInstance ()
public static List<A> AList {
 get { 
       if(_AList == null) _AList = new List<A>();
       return _AList; 
     }
 set { _AList = value; }
}