1

オブジェクトを動的に作成してリストに保存したいと思います。プログラム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 ?!
}
4

6 に答える 6

7

実際にListインスタンスを作成する必要があります

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

最初の行。

于 2013-02-05T16:52:45.993 に答える
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を呼び出す必要があることに注意してください。

于 2013-02-05T16:54:38.410 に答える
2

あなたcategoryListは初期化されていません。最初の行を次のように変更します。

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

.Add(...)null値でメソッドにアクセスしようとすると、null参照例外が発生します。

于 2013-02-05T16:52:41.767 に答える
1

エラー行は次のようになります。

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

したがって、リストを作成し、作成した要素を1つ追加して、このリストへの参照をに保存します。categoryList

于 2013-02-05T17:13:45.117 に答える
1

指定された変数categoryListは初期化されていません。したがって、それはnullです。

単一化変数でメソッドを呼び出すことはできません。

試す :

List<Category> categoryList= new List<Category>();
于 2013-02-05T16:53:08.833 に答える
1

作成しますcategoryList = new List<Category>()か?

于 2013-02-05T16:53:18.560 に答える