C# 如何在同一类的静态列表属性中添加类的对象?
我有一个类a,它有2个普通属性(字符串属性)和1个静态属性(类型a的列表)。在构造函数中创建类a的新实例时,我想在静态列表属性中添加该实例。我有两个问题 1-可能吗 2-如果可能,我如何实施 我正在使用以下代码: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 {
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(本)构造函数中的code>应将正在构造的对象实例添加到列表中 是的,这是可能的,您可以在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; }
}