如何将通用列表转换为列表?
我正在使用一个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"运算符,如果失败,则创建一个新的ArrayList或List<object>复制内容.如果你手头有什么是List<T>,那么你已经拥有的东西,实现IList直接.
作为List<T>实现IList界面,您可以简单地提供List<T>.如果需要,只需投下它:
List<int> list = new List<int>();
IList ilist = (IList)list;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
784 次 |
| 最近记录: |