gpt4 book ai didi

c# - C# 中的继承 - 简单问题

转载 作者:行者123 更新时间:2023-11-30 20:13:57 25 4
gpt4 key购买 nike

Duplicate

In C#, why can’t a List object be stored in a List variable

这是我的代码:

public class Base
{
protected BindingList<SampleBase> m_samples;

public Base() { }
}

public class Derived : Base
{
public Derived()
{
m_samples = new BindingList<SampleDerived>();
}
}

SampleDerived 派生自 SampleBase

按照继承逻辑,我应该可以做到这一点。但是,它无法编译 - 错误表明 SampleBase 无法隐式转换为 SampleDerived 类型。给了什么?

我正在使用 C# 2.0

最佳答案

您正在尝试使用 C# 3.0 及更早版本不支持的协方差(但将在 C# 4.0 中提供)。您仍然可以添加 SampleDerived 类型的对象进入m_samples , 但列表的通用类型需要是 SampleBase .

编辑: 所以 Pavel 是对的,C# 4.0 实际上对此没有帮助。如果 m_sample被定义为 IBindingList<SampleBase>使用(虚构的)协变接口(interface) IBindingList<out T> .

关于c# - C# 中的继承 - 简单问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1180569/

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