我的应用程序发出请求以获取所有用户并将用户对象存储在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];
它说它无法将对象类型转换为用户。
如何绕过它?
答案 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);
}
然后,对象已存储为用户。