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

本文关键字:转换 列表 嵌套类型 | 更新日期: 2023-09-27 18:02:07

我在SO上查看了一些关于c#中强制转换列表的答案。

如果我没弄错的话,在Cast嵌套列表<到嵌套列表>ToString()创建string的新实例。

考虑类

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

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

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

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

相关文章: