无法强制转换object类型的对象{System.Collections.Generic.List}

本文关键字:List Generic Collections string System 转换 object 对象 类型 | 更新日期: 2023-09-27 18:02:35

为什么不能将运行时类型为object {System.Collections.Generic.List<string[]>}的对象强制转换为ICollection<object> ?

我肯定这是很明显的事情,但我想不出来。

它给出了异常-

无法强制转换类型的对象'System.Collections.Generic.List 1[System.String[]]' to type 'System.Collections.Generic.ICollection 1[System.Object]'.

无法强制转换object类型的对象{System.Collections.Generic.List<string[]>}

在c# 4.0之前,泛型不是协变的。如果你没有使用c# 4.0,你可以像这样完成这个强制转换:

List<string[]> list = new List<string[]>();
//...Fill the list...
ICollection<object> collection = list.ConvertAll<object>(item => item as object);

参见通用接口中的差异