gpt4 book ai didi

c# - 向上转型和通用列表

转载 作者:太空狗 更新时间:2023-10-29 23:57:06 31 4
gpt4 key购买 nike

我有以下类层次结构:

public abstract class BaseData
{
//some properties
}

public class CoData : BaseData
{
//some properties
}

我正在使用一种要求返回类型为 List<BaseData> 的方法.在该方法中,我可以访问 List<CoData>

public List<BaseData> Save()
{
List<CoData> listCoData = GetData();
return listCoData;
}

如果我理解正确,我可以从 CoDataBaseData .但是,当我有一个列表时,即使我明确尝试进行类型转换,它也会出错。

错误:

Error   118 Cannot implicitly convert type 'System.Collections.Generic.List<CoData>' to System.Collections.Generic.List<BaseData>'

编辑:

mquander 的转换方法似乎在 3.0 中对我有用

向下转型也是这样吗?来自

即,我可以这样做吗 - List<CoData> listCoData = listBaseData.Cast<BaseData>().ToList();

最佳答案

是的;欢迎来到方差。最终,它不是 BaseData 的列表- 例如,如果您有另一个子类,一个 List<BaseData>会(在编译时)让你 .Add它...但是运行时类型不允许您这样做。编译器会阻止你犯错误。

在某些情况下,泛型可以提供帮助...我在 this blog entry 的末尾讨论了这个问题.请注意,.NET 4.0 差异不适用于列表。

关于c# - 向上转型和通用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730401/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com