在C#中嵌套嵌套类型的列表

时间:2016-08-11 21:38:29

标签: c# list casting

我已经在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

1 个答案:

答案 0 :(得分:0)

您必须使用@lokusking所提及的.Cast<OtherType>()名称空间System.Linq扩展名方法。

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