3

私はこのクラスを持っています

public class User
{
   private string _name;
   public string UserName { get; set; }       
   public List<int> ControlNumber { get; set; }
   public User (string username)
   {
       _name = username;
   }
   public User()
   {
   }

}

そして、クラスを満たすこの関数。

User UserClass = new User(e.Key); //e.Key = user's name

public static void FillUserListClass(DataTable dt, ref UserClass)

{
    try
    {

        for (int ctr = 0; ctr < dt.Rows.Count; ctr++)
        {
            var row = dt.Rows[ctr];
            var userName = row["User"].ToString();

            if (UserList.ContainsKey(userName))
            {
                UserList[userName].Add(Convert.ToInt32(row["ControlNumber"]));
            }
            else
            {
                _user.UserName = row["User"].ToString();
                _user.ControlNumber.Add(Convert.ToInt32(row["ControlNumber"]));

            }
              //print out
            Console.WriteLine("UserList Class: ");
            Console.WriteLine(_user.UserName);
            Console.WriteLine(_user.ControlNumber);


        }
    }
    finally
    {
        //conn.Close();
    }

}

ただし、_user.ControlNumber.Add(Convert.ToInt32(row["ControlNumber"]));「オブジェクト参照がオブジェクトのインスタンスに設定されていません」という行が表示されます。エラー。何か助けはありますか?

私がやろうとしているのは、ユーザーのコントロール番号を含む各ユーザーのクラスを作成することです。次に、これらすべてのクラスを辞書に配置して参照できるようにします。

4

6 に答える 6

18

コンストラクターでリストを初期化する必要があります。

   public User (string username) : this()
   {
       _name = username;
   }
   public User()
   {
      this.ControlNumber = new List<int>();
   }

それ以外の場合、ControlNumberデフォルト値は null になります。

于 2013-06-06T15:56:42.510 に答える
1

デフォルトでは、ControlNumberプロパティは に設定されていnullます。

コンストラクターで、次のようにして空のリストに初期化します。

this.ControlNumber = new List<int>();
于 2013-06-06T15:57:31.400 に答える
0

を定義しました_userか? あなたの例ではそれがわかりません。

于 2013-06-06T15:57:50.170 に答える