C# 访问对象的列表属性

C# 访问对象的列表属性,c#,list,C#,List,我有一个简单的类,我认为如果我添加一个list属性来存储一些值,我可以使它变得更有用(我不想要数组bc,我不知道它需要多长时间) 我犯了一个错误。对象引用未设置为对象的实例 你知道我做错了什么吗 您必须初始化列表。它只是声明的,不是自动初始化的 在构造函数中初始化它: public MyClass() { MyList = new List<double>(); } publicmyclass() { MyList=新列表(); } (顺便说一句,为了符合命名约定,属性必

我有一个简单的类,我认为如果我添加一个list属性来存储一些值,我可以使它变得更有用(我不想要数组bc,我不知道它需要多长时间)

我犯了一个错误。对象引用未设置为对象的实例


你知道我做错了什么吗

您必须初始化列表。它只是声明的,不是自动初始化的

在构造函数中初始化它:

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

}