我希望动态创建对象并将其保存到列表中。当程序到达add
方法以在列表中添加对象时,我收到错误:
对象引用未设置为对象的实例。
我在这里做错了什么?
List<Category> categoryList;
public Main(string firstname, string lastname, string status)
{
InitializeComponent();
label1.Text = (firstname + lastname + status).Trim();
string connection = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Trgovina.mdf;Integrated Security=True";
SqlConnection cn = new SqlConnection(connection);
try
{
cn.Open();
}
catch (Exception) { MessageBox.Show("Error occurred during database communication!"); }
string sqlQuery = "SELECT * FROM Kategorije_art";
SqlCommand categoryCommand = new SqlCommand(sqlQuery, cn);
SqlDataReader categoryDataRead = categoryCommand.ExecuteReader();
categoryList.Add(new Category(1, "a")); //ERROR ?!
}
答案 0 :(得分:7)
您必须实际创建List
实例
List<Category> categoryList= new List<Category>();
在第一行。
答案 1 :(得分:4)
您的成员categoryList未初始化。
尝试:
List<Category> categoryList = new List<Category>();
public Main(string firstname, string lastname, string status)
{
InitializeComponent();
label1.Text = (firstname+lastname+status).Trim();
string connection = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Trgovina.mdf;Integrated Security=True";
SqlConnection cn = new SqlConnection(connection);
try
{
cn.Open();
}
catch (Exception) { MessageBox.Show("Error occurred during database communication!"); }
string sqlQuery = "SELECT * FROM Kategorije_art";
SqlCommand categoryCommand = new SqlCommand(sqlQuery, cn);
SqlDataReader categoryDataRead = categoryCommand.ExecuteReader();
categoryList.Add(new Category(1, "a")); //ERROR ?!
}
另请注意,您应该在使用块中使用SqlConnection,或者至少调用Close / Dispose,这样就不会泄漏连接。
答案 2 :(得分:2)
您的categoryList
未初始化。将您的第一行更改为:
List<Category> categoryList = new List<Category>();
当您尝试在空值上访问.Add(...)
方法时,将出现空引用异常。
答案 3 :(得分:1)
您的名为categoryList
的变量未初始化。所以它是空的。
您不能在单位化变量上调用任何方法。
尝试:
List<Category> categoryList= new List<Category>();
答案 4 :(得分:1)
你创建了categoryList = new List<Category>()
吗?
答案 5 :(得分:1)
您的错误行应如下所示:
categoryList = new List<Category>() { new Category(1,"a")};
所以您创建列表并在categoryList