C# 访问对象的列表属性
我有一个简单的类,我认为如果我添加一个list属性来存储一些值,我可以使它变得更有用(我不想要数组bc,我不知道它需要多长时间) 我犯了一个错误。对象引用未设置为对象的实例C# 访问对象的列表属性,c#,list,C#,List,我有一个简单的类,我认为如果我添加一个list属性来存储一些值,我可以使它变得更有用(我不想要数组bc,我不知道它需要多长时间) 我犯了一个错误。对象引用未设置为对象的实例 你知道我做错了什么吗 您必须初始化列表。它只是声明的,不是自动初始化的 在构造函数中初始化它: public MyClass() { MyList = new List<double>(); } publicmyclass() { MyList=新列表(); } (顺便说一句,为了符合命名约定,属性必
你知道我做错了什么吗 您必须初始化列表。它只是声明的,不是自动初始化的 在构造函数中初始化它:
public MyClass()
{
MyList = new List<double>();
}
publicmyclass()
{
MyList=新列表();
}
(顺便说一句,为了符合命名约定,属性必须是帕斯卡大小写,而不是驼峰大小写…因此
myList
应该是myList
)您需要将列表初始化为某个值-它没有初始化,因此它是null
在类构造函数中,可以执行以下操作:
public MyClass()
{
myList = new List<double>();
}
publicmyclass()
{
myList=新列表();
}
您需要先初始化列表才能正常工作,然后添加如下所示的项目
if ( newObject.myList==null)
newObject.myList= new List<double>();
newObject.myList.Add(x);
if(newObject.myList==null)
newObject.myList=新列表();
newObject.myList.Add(x);
您必须创建列表的实例。您可以向类的构造函数添加初始化:
public class MyClass
{
public double myProperty1;
public double myProperty2;
//etc
public List<double> myList {get; set;}
public MyClass(){
myList = new List<double>();
}
}
公共类MyClass
{
公共双MyProperty 1;
公共双myProperty2;
//等
公共列表myList{get;set;}
公共MyClass(){
myList=新列表();
}
}
必须将列表
对象实例化为新对象。没有iStation,它只是一个指针。公共类MyClass
public class MyClass
{
public double myProperty1;
public double myProperty2;
//etc
public List<double> myList {get; private set;} // private set
public MyClass() // constructor
{
myList = new List<double>(); // create the list
}
}
{
公共双MyProperty 1;
公共双myProperty2;
//等
公共列表myList{get;private set;}//private set
公共MyClass()//构造函数
{
myList=新建列表();//创建列表
}
}
您的类实例需要一个实际的
列表实例。创建它的正确位置是在构造函数中。私有setter通常是一个好主意,但不是必需的。如果不自己创建实例,就不能将隐式属性与对象(如列表)一起使用
// Implicit declaration, a field is created in background, but the object isn't initialized.
public List<double> myList {get; set;}
//隐式声明,在后台创建字段,但对象未初始化。
公共列表myList{get;set;}
相反:
// Explicit declaration, with me creating an instance
private List<double> myList = new List<double>();
public List<double> MyList
{
get { return myList; }
}
//显式声明,由我创建实例
私有列表myList=新列表();
公共列表列表
{
获取{return myList;}
}
另一种方法是在构造函数中初始化隐式声明。但我喜欢编写自己的字段。在使用“可以在构造函数中”之前,您需要初始化myList
public class MyClass
{
public MyClass()
{
myList = new List<double>();
}
public double myProperty1;
public double myProperty2;
//etc
public List<double> myList {get; set;}
}
公共类MyClass
{
公共MyClass()
{
myList=新列表();
}
公共双MyProperty 1;
公共双myProperty2;
//等
公共列表myList{get;set;}
}
完美。非常感谢。我想我需要初始化列表,但我不知道在哪里。
// Explicit declaration, with me creating an instance
private List<double> myList = new List<double>();
public List<double> MyList
{
get { return myList; }
}
public class MyClass
{
public MyClass()
{
myList = new List<double>();
}
public double myProperty1;
public double myProperty2;
//etc
public List<double> myList {get; set;}
}