我已经在SO上检查了一些关于在C#中投射列表的答案。
如果我没弄错的话,在Cast Nested List<X> to Nested List<Y>中,ToString()会生成新的字符串实例。
考虑课程:
public class abstract A {...}
public class B : A {...}
public class DataEntry<T, K> : Tuple<T, K> where K : A {...}
接下来考虑数据条目列表:
List<DataEntry<float[], B>> myList = ...
我如何将其阴云密布:
List<DataEntry<float[], A>> myList2 = ???
没有制作新的DataEntry实例? List.Cast不起作用。同时逐个列出列表元素
foreach(entry : dataEntryList) {
myNewList.Add((DataEntry<float[], A>) entry);
}
我需要在不创建新实例的情况下强制转换所有元素。请问有可能吗?
编辑: K:B - &gt; K:A
答案 0 :(得分:0)
您必须使用@lokusking所提及的.Cast<OtherType>()
名称空间System.Linq
扩展名方法。
您无法转换整个类型,因为所涉及的类型不是共变型的 - 它们的类型参数未使用out
关键字声明。