-1

我是 C# 新手,我正在尝试在 C# 中进行探索,但是我尝试在列表框中添加一个列表。

我遇到的错误是:Object reference not set to an instance of an object. 知道如何解决这个问题吗?

namespace WindowsFormsApplication
{
    public partial class Form1 : Form
    {
        something a = something iets();

        public Form1()
        {
            InitializeComponent();
        }
// part1
        class something {

            public List<string> testing { get  ; set; }
        }

// part2
        private void button1_Click(object sender, EventArgs e)
        {
            a.testing.Add("programming");
            a.testing.Add("over");
            a.testing.Add("something");



            foreach (string i in a.testing)
            { listBox1.Items.Add(i); }
        }
    }
}
4

3 回答 3

3

testing您必须在访问它之前的某个时间点进行初始化。

也许您可以将构造函数添加到 something 类。

public something()
{
  testing = new List<string>();
}

正如上面的评论所指出的,替换

something a = something iets();

下面是这个。

something a = new something(); //this should be the correct thing.
于 2013-03-12T19:47:12.623 回答
2

我认为您得到 a 的原因是NullReferenceException类中的字符串列表something未初始化。您可以定义一个无参数构造函数并在那里初始化列表。

public something()
{
    testing = new List<string>();
}

您可能还想知道类和属​​性名称的第一个字母通常大写(例如,class Something而不是class something)。

此外,您可以使用该AddRange方法而不是在 foreach 循环中一一添加字符串。

listbox1.Items.AddRange(a.testing.ToArray());
于 2013-03-12T19:52:04.080 回答
1

您的类“某事”从不初始化列表。你应该做的是这个。

class something{
private List<string> _list;
public something(){
    _list = new List<string>();
}

public List<string> testing {get{return _list;} set{_list = value;}}

}

或者在您的 a.testing.Add() 行之前,您应该执行 a.testing = new List();

于 2013-03-12T19:50:33.000 回答