C# C中嵌套类型的强制转换列表#
我已经检查了一些关于C#中演员名单的答案 如果我没有弄错的话,在ToString()中创建string的新实例 考虑课程: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
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
是/inheritB
-它不能是A
!正如@Amit所说。由于中的K:B
抱歉,错误,您将无法强制执行此操作,因为它应该是A。在更新时.cast()可以完美地工作<代码>myList.Cast()代码>->没有错误不,这对我不起作用。