C#IList 转换成 List 问题

诗人的乌班图 2018-03-18 10:05:33
在网上找了下资料试了一下没有成功代码如下
List<T> list = new List<T>();
foreach (var item in (IList<T>)result.list)
{
list.Add(item);
}
报错了,请问如何解决?
...全文
1175 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
早起晚睡 2018-03-19
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
对于foreach语句,要遍历具有枚举接口的集合,需要直接按照多年以前的代码方式手动声明枚举变量的类型, 而不能写“var”,编译器无法进行类型推断。这是 c# 的 foreach 语句的一个编程基本模式。 深入来看,设计理念有问题,才会造成麻烦。
牛人就是牛啊
  • 打赏
  • 举报
回复
对于foreach语句 --> 对于弱类型集合的 foreach语句
  • 打赏
  • 举报
回复
这个代码应该写类似
foreach (Lanting.Model.T item in result.list)
{
     
}
这样的代码,跟什么“转换 List<T>”没有关系。这个是对于弱类型 object 如何引用的问题,在 foreach 中你要写具体的类型,而不是写 var。 另外,应该说的是,设计 result.list 的返回类型的设计者有些问题。不应该定义弱类型 List<object> 或者 List<dynamic> 之类的设计时不靠谱的类型,而应该明确写出来含有父类或者接口的定义,例如定义为 List<Lanting.Model.T> 类型。这样你就能直接写
foreach (var item in result.list)
代码了。
  • 打赏
  • 举报
回复
对于foreach语句,要遍历具有枚举接口的集合,需要直接按照多年以前的代码方式手动声明枚举变量的类型, 而不能写“var”,编译器无法进行类型推断。这是 c# 的 foreach 语句的一个编程基本模式。 深入来看,设计理念有问题,才会造成麻烦。
把分全给哥 2018-03-19
  • 打赏
  • 举报
回复
报错信息已经很明显
xuzuning 2018-03-19
  • 打赏
  • 举报
回复
System.Object 不能转换为 Lanting.Model.T
正怒月神 2018-03-19
  • 打赏
  • 举报
回复
引用 3 楼 u014694753 的回复:
[quote=引用 2 楼 hez2010 的回复:] 这样做的意义在哪里呢,全部用List<T>就好了啊
result.list 返回的是一条IList数据[/quote] 报错信息已经很明显了啊。 你的result.list是 List<object> 而你转的 list<T>是 list<Lanting.Model.T> 这不是说 List无法转成IList。而是内部对象无法转换。
诗人的乌班图 2018-03-19
  • 打赏
  • 举报
回复
早上好!
  • 打赏
  • 举报
回复
List<T>有个方法叫AddRange
诗人的乌班图 2018-03-18
  • 打赏
  • 举报
回复
引用 2 楼 hez2010 的回复:
这样做的意义在哪里呢,全部用List<T>就好了啊
result.list 返回的是一条IList数据
hez2010 2018-03-18
  • 打赏
  • 举报
回复
这样做的意义在哪里呢,全部用List<T>就好了啊
诗人的乌班图 2018-03-18
  • 打赏
  • 举报
回复
报错信息: 其他信息: 无法将类型为“System.Collections.Generic.List`1[System.Object]”的对象强制转换为类型“System.Collections.Generic.IList`1[Lanting.Model.T]”。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧