如何将一个通用的 List<T> 转换成 List?

5

如何将通用List转换为List?

我正在使用ListCollectionView,并且需要提供一个IList而不是IList<T>。

我看到很多将IList转换为IList<T>的示例,但没有相反的示例。

我只需手动转换它(new List().AddRange(IList<T>))吗?

3个回答

10
为了澄清其他答案: > 不需要实现类型也实现 。> 需要 。我们可以通过 > 来完成这个操作,因为 T 的序列总是可以被视为对象的序列。但是,长颈鹿列表不能被视为对象列表;你可以将老虎添加到对象列表中。
然而,>不安全地实现了。如果您试图通过首先将其转换为 IList 将一只老虎添加到 > 中,您将会得到一个异常。
因此,回答这个问题:如果您手头只有一个 >,那么您可以使用 "as" 运算符将其推测转换为 ,如果失败,则创建一个新的 或 > 并复制其中的内容。如果您手头有一个 >,那么您已经拥有了直接实现 的东西。

如果你试图将一只老虎添加到List<Giraffe>中,你会得到一个异常。更不用说可能会造成一些麻烦了。--感谢对象化 -vHelpful. - justSteve

9
< p>由于List<T>实现了IList接口,因此您只需提供List<T>即可。如果需要,只需进行强制转换:

List<int> list = new List<int>();
IList ilist = (IList)list;

2

您无需进行任何转换。 List<T> 实现了 IList 接口。

如果您需要类型 IList,例如使用特定的重载,请使用强制转换语法 (IList)theList


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接