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

时间:2013-02-05 16:50:50

标签: c# list object

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

6 个答案:

答案 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

中添加一个创建的元素并将引用存储到此列表中