如何将通用List <T>转换为List?

kev*_*aub 5 c# generics

如何将通用列表转换为列表?

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

我看到很多例子可以将ILista 转换为a IList<T>,但不是其他方式.

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

Eri*_*ert 10

澄清其他答案:

IList<T>没有要求一个执行型,也能实现IList.IEnumerable<T>确实需要IEnumerable.我们可以侥幸逃脱,IEnumerable<T>因为T序列总是可以被视为一系列对象.但是长颈鹿的名单不能被视为对象列表; 您可以将老虎添加到对象列表中.

但是,List<T>确实不安全地实施IList.如果您尝试List<Giraffe>通过首先将老虎添加到IList 来添加老虎,那么您将获得异常.

所以回答这个问题:如果您拥有的只是一个IList<T>,您可以推测性地将其转换IList为"as"运算符,如果失败,则创建一个新的ArrayListList<object>复制内容.如果你手头有什么是List<T>,那么你已经拥有的东西,实现IList直接.


Fem*_*ref 9

作为List<T>实现IList界面,您可以简单地提供List<T>.如果需要,只需投下它:

List<int> list = new List<int>();
IList ilist = (IList)list;
Run Code Online (Sandbox Code Playgroud)