Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 添加到类内的列表_C#_List_Class - Fatal编程技术网

C# 添加到类内的列表

C# 添加到类内的列表,c#,list,class,C#,List,Class,我有这门课 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() { } }

我有这门课

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()
   {
   }

}
公共类用户
{
私有字符串\u名称;
公共字符串用户名{get;set;}
公共列表控制编号{get;set;}
公共用户(字符串用户名)
{
_名称=用户名;
}
公共用户()
{
}
}
这个函数填充了这个类

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 UserClass=新用户(e.Key)//e、 Key=用户名
公共静态void FillUserListClass(DataTable dt,ref UserClass)
{
尝试
{
对于(int-ctr=0;ctr
但是,在
\u user.ControlNumber.Add(Convert.ToInt32(row[“ControlNumber”])行我得到“对象引用未设置为对象的实例。”错误。有什么帮助吗


我要做的是为每个用户创建一个包含用户控件号的类。然后,我希望将所有这些类放入字典中以供参考。

您需要在构造函数中初始化列表:

   public User (string username) : this()
   {
       _name = username;
   }
   public User()
   {
      this.ControlNumber = new List<int>();
   }
公共用户(字符串用户名):this()
{
_名称=用户名;
}
公共用户()
{
this.ControlNumber=新列表();
}

否则,
ControlNumber
的默认值为null。

默认情况下,
ControlNumber
属性设置为
null

在构造函数中,执行以下操作将其初始化为空列表:

this.ControlNumber = new List<int>();
this.ControlNumber=新列表();

您定义了用户吗?
我在您的示例中没有看到它。

请确保在使用列表之前初始化列表

更正的用户类别:

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

}

您尚未初始化
控制编号
,可以在构造函数中执行此操作,如

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

我希望这有帮助。

我讨厌在构造函数中设置属性,所以我要做的是:

private List<int> _controlNumber;
public List<int> ControlNumber { 
    get { 
        if (_controlNumber == null)
            _controlNumber=new List<int>(); 

        return _controlNumber; 
    }

    set { _controlNumber = value } 
}
private List\u controlNumber;
公共列表控制编号{
获取{
如果(_controlNumber==null)
_controlNumber=新列表();
返回控制号;
}
设置{u controlNumber=value}
}
或者干脆

private List<int> _controlNumber = new List<int>();
public List<int> ControlNumber { 
    get { return _controlNumber; } 
    set { _controlNumber = value } 
}
private List_controlNumber=new List();
公共列表控制编号{
获取{return\u controlNumber;}
设置{u controlNumber=value}
}

如果我在另一个类中有一个列表,比如:。我得到一个
运行时异常(第9行):对象引用未设置为对象的实例。
error@Si8-为
DHold
创建一个构造函数,并将
tlList
初始化为一个新的
List
I+1您的答案,因为它引导了您的答案以及您的评论。我以前就想出来了,不过还是要谢谢你的回答:)
private List<int> _controlNumber;
public List<int> ControlNumber { 
    get { 
        if (_controlNumber == null)
            _controlNumber=new List<int>(); 

        return _controlNumber; 
    }

    set { _controlNumber = value } 
}
private List<int> _controlNumber = new List<int>();
public List<int> ControlNumber { 
    get { return _controlNumber; } 
    set { _controlNumber = value } 
}