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 }
}