在下面的代码中,systemUsers
是绑定列表,而usernames
,firstNames
和lastNames
是数组。
我正在尝试通过循环将新用户添加到绑定列表systemUsers
中。添加它们之后,我然后尝试更新其实例变量,例如名字和姓氏。
但是,当我这样做时,它们不会改变-它们的值为null
。为什么会这样?
public static void CreateUsers()
{
// loop over the num. of users
for (int i = 0; i < numberOfUsers; i++)
{
// create new user
systemUsers.Add(new User(usernames[i]));
// get class instance
currentUser = systemUsers[i];
// set class properties
currentUser.FirstName = firstNames[i];
currentUser.LastName = lastNames[i];
}
}
User()
是一个构造函数,它采用参数'username',即User(string username)
。
答案 0 :(得分:1)
尝试下面的代码。您需要在循环中设置currentUser变量,然后设置其FirstName和LastName属性。现在,您没有在代码中的任何地方设置currentUser。在不声明变量并将其设置为某个值的情况下使用变量是不正确的。
此外,请确保firstNames
和lastNames
的数组已正确填充且不包含空值。例如,如果用户数为2个或更多,则firstNames[1]
不应为null。
public static void CreateUsers()
{
//make sure currentUser variable is declared outside the loop
//or inside the loop at start of the loop body
User currentUser = null;
//make sure your systemUsers binding list is not null
if(systemUsers == null) {
systemUsers = new BindingList<User>();
}
// loop over the num. of users
for (int i = 0; i < numberOfUsers; i++)
{
// create new user
currentUser = new User(usernames[i]);
currentUser.FirstName = firstNames[i];
currentUser.LastName = lastNames[i];
//add the User object to your list
systemUsers.Add(currentUser);
}
}
答案 1 :(得分:1)
您可以在实例化User
类的同时设置这些属性的值。无论currentUser
引用什么,它都是不是您在示例中实例化的User
类。
public static void CreateUsers()
{
for (int i = 0; i < numberOfUsers; i++)
{
systemUsers.Add(new User(usernames[i]) { FirstName = firstNames[i], LastName = lastNames[i] });
}
}
答案 2 :(得分:0)
将使用Select之类的AddRange或直接初始化:
systemUsers = Enumerable.Range(0, numberOfUsers)
.Select(i => new User {
FirstName = firstNames[i],
// others properties
})
.ToList()