C# 改变对象类型
C# Change type of object
我的应用程序请求获取所有用户并将用户对象存储在 ArrayList 中。
ArrayList userlist = new ArrayList();
foreach (User user in response.users)
{
userlist.Add(user);
}
所以现在我有一个用户数组列表。我遍历用户列表并填充组合框。
userList = Program.GetALLUsers();
foreach (User user in userList)
{
cmbUserList.Items.Add(user.displayName);
}
cmbUserList.SelectedIndex = 0;
我的下一个函数获取用户详细信息,它将用户对象作为参数,因此可以进一步调用以获取特定用户对象的详细信息。
现在,当我单击 getUserDetials 按钮时,它会从组合框中获取选定的索引(应该与 Arraylist 中的索引相同)并将其传递给 getUserDetails 函数。对于这个例子,我只是硬编码索引 1.
User currentUser = userList[0];
它说它不能将对象类型转换为用户。
知道如何绕过它吗?
对此的简单解决方案是进行显式转换:
User currentUser = (User)userList[0];
但是,您最好使用 List<User>
而不是 ArrayList
。这样你就不必强制转换值了。
User currentUser = (User)userList[0];
仅供参考,您也可以简单地执行 ((User)userList[0]).ClassMember 而不是使用变量。我不是说它更好,我是在展示一个选择。
不过我建议您使用 List<> 而不是 ArrayList。
List<User> userList = new List<User>();
foreach (User user in response.users)
{
userlist.Add(user);
}
那么对象已经作为用户存储了。
我的应用程序请求获取所有用户并将用户对象存储在 ArrayList 中。
ArrayList userlist = new ArrayList();
foreach (User user in response.users)
{
userlist.Add(user);
}
所以现在我有一个用户数组列表。我遍历用户列表并填充组合框。
userList = Program.GetALLUsers();
foreach (User user in userList)
{
cmbUserList.Items.Add(user.displayName);
}
cmbUserList.SelectedIndex = 0;
我的下一个函数获取用户详细信息,它将用户对象作为参数,因此可以进一步调用以获取特定用户对象的详细信息。
现在,当我单击 getUserDetials 按钮时,它会从组合框中获取选定的索引(应该与 Arraylist 中的索引相同)并将其传递给 getUserDetails 函数。对于这个例子,我只是硬编码索引 1.
User currentUser = userList[0];
它说它不能将对象类型转换为用户。
知道如何绕过它吗?
对此的简单解决方案是进行显式转换:
User currentUser = (User)userList[0];
但是,您最好使用 List<User>
而不是 ArrayList
。这样你就不必强制转换值了。
User currentUser = (User)userList[0];
仅供参考,您也可以简单地执行 ((User)userList[0]).ClassMember 而不是使用变量。我不是说它更好,我是在展示一个选择。
不过我建议您使用 List<> 而不是 ArrayList。
List<User> userList = new List<User>();
foreach (User user in response.users)
{
userlist.Add(user);
}
那么对象已经作为用户存储了。