我是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); }
}
}
}
答案 0 :(得分:3)
在访问之前,您必须在某个时刻初始化testing
。
也许你可以在某个类中添加一个构造函数。
public something()
{
testing = new List<string>();
}
并按上述评论中的指示,替换
something a = something iets();
以下。
something a = new something(); //this should be the correct thing.
答案 1 :(得分:2)
我认为您获得NullReferenceException
的原因是类something
中的字符串列表未初始化。您可以定义无参数构造函数并在那里初始化列表。
public something()
{
testing = new List<string>();
}
您可能还想知道类和属性名称的第一个字母通常是大写的(例如class Something
而不是class something
)。
此外,您可以使用AddRange
方法,而不是在foreach循环中逐个添加字符串。
listbox1.Items.AddRange(a.testing.ToArray());
答案 2 :(得分: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();