C#更改对象类型

时间:2015-01-21 22:33:57

标签: c# object arraylist

我的应用程序发出请求以获取所有用户并将用户对象存储在ArrayList中。

 ArrayList userlist = new ArrayList();
 foreach (User user in response.users)
 {
    userlist.Add(user);
 }

所以现在我有一个用户的Arraylist。我遍历用户列表并填充一个组合框。

        userList = Program.GetALLUsers();
        foreach (User user in userList)
        {
            cmbUserList.Items.Add(user.displayName);
        }
        cmbUserList.SelectedIndex = 0;

我的下一个函数获取了将User对象作为Param的用户详细信息,因此可以进一步调用以获取特定用户对象的详细信息。

所以现在当我点击我的getUserDetials按钮时,它会从组合框中获取所选索引(应该是Arraylist中的相同索引)并将其传递给getUserDetails函数。对于这个例子,我只是硬编码索引1。

  User currentUser = userList[0];

它说它无法将对象类型转换为用户。

如何绕过它?

2 个答案:

答案 0 :(得分:2)

对此的简单解决方案是进行显式转换:

User currentUser = (User)userList[0];

但是,最好使用List<User>代替ArrayList。这样你就不必抛出值了。

答案 1 :(得分:1)

User currentUser = (User)userList[0];

仅供参考,你也可以简单地做((用户)userList [0])。ClassMember而不是使用变量。我不是说它更好,我正在做出选择。

我建议您使用List&lt;&gt;而不是ArrayList。

List<User> userList = new List<User>();

foreach (User user in response.users)
{
    userlist.Add(user);
}

然后,对象已存储为用户。