C# C中嵌套类型的强制转换列表#

C# C中嵌套类型的强制转换列表#,c#,list,casting,C#,List,Casting,我已经检查了一些关于C#中演员名单的答案 如果我没有弄错的话,在ToString()中创建string的新实例 考虑课程: public class abstract A {...} public class B : A {...} public class DataEntry<T, K> : Tuple<T, K> where K : A {...} 公共类抽象A{…} 公共B类:A{…} 公共类数据项:元组,其中K:A{…} 下考虑数据条目列表: List&l

我已经检查了一些关于C#中演员名单的答案

如果我没有弄错的话,在ToString()中创建string的新实例

考虑课程:

public class abstract A {...}

public class B : A {...}

public class DataEntry<T, K> : Tuple<T, K> where K : A {...}
公共类抽象A{…}
公共B类:A{…}
公共类数据项:元组,其中K:A{…}

下考虑数据条目列表:

List<DataEntry<float[], B>> myList = ...
List myList=。。。
我如何克服它来:

List<DataEntry<float[], A>> myList2 = ???
List myList2=???
不创建新的数据条目实例?列表。演员阵容不起作用。还可以逐个强制转换列表中的元素

foreach(entry : dataEntryList) {
    myNewList.Add((DataEntry<float[], A>) entry);
}
foreach(条目:dataEntryList){
添加((数据条目)条目);
}
我需要在不创建新实例的情况下强制转换所有元素。可以吗

编辑:
K:B->K:A

您必须使用@lokusking提到的namespace
System.Linq
中的
.Cast()
扩展方法


您不能强制转换整个类型,因为所涉及的类型不是共变的-它们的类型参数不是用
out
关键字声明的。

数据项的定义要求
K
是/inherit
B
-它不能是
A
!正如@Amit所说。由于
中的K:B
抱歉,错误,您将无法强制执行此操作,因为它应该是A。在更新时.cast()可以完美地工作<代码>myList.Cast()->没有错误不,这对我不起作用。