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

那么对象已经作为用户存储了。