c#中嵌套类型的强制转换列表
本文关键字:转换 列表 嵌套类型 | 更新日期: 2023-09-27 18:02:07
我在SO上查看了一些关于c#中强制转换列表的答案。
如果我没弄错的话,在Cast嵌套列表<到嵌套列表>
考虑类
public class abstract A {...}
public class B : A {...}
public class DataEntry<T, K> : Tuple<T, K> where K : A {...}
下一步考虑数据条目列表:
List<DataEntry<float[], B>> myList = ...
如何将其overcast to:
List<DataEntry<float[], A>> myList2 = ???
不创建新的DataEntry实例?列表中。Cast不起作用。还可以逐个转换list的元素
foreach(entry : dataEntryList) {
myNewList.Add((DataEntry<float[], A>) entry);
}
我需要在不创建新实例的情况下转换所有元素。可以吗?
编辑:K:B -> K:A
您必须在名称空间System.Linq
中使用@lokusking提到的.Cast<OtherType>()
扩展方法。
不能强制转换整个类型,因为所涉及的类型不是协变的——它们的类型参数不是用out
关键字声明的。