将元素添加到对象列表时出错

本文关键字:列表 出错 对象 元素 添加 | 更新日期: 2023-09-27 17:57:52

我希望动态创建对象并将其保存到列表中。当程序到达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 ?!
}

将元素添加到对象列表时出错

您必须实际创建List实例

List<Category> categoryList= new List<Category>();

在第一行。

您的成员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放在using块中,或者至少对其调用Close/Dispose,这样就不会泄漏连接。

您的categoryList未初始化。将您的第一行更改为:

List<Category> categoryList = new List<Category>();

当您尝试访问null值上的.Add(...)方法时,会出现null引用异常。

名为categoryList的变量未初始化。所以它是空的。

不能对单元化变量调用任何方法。

尝试:

List<Category> categoryList= new List<Category>();

是否创建categoryList = new List<Category>()

您的错误行应该如下所示:

categoryList = new List<Category>() { new Category(1,"a")};

因此,您可以创建列表并添加一个创建的元素,并将对该列表的引用存储在categoryList