相关疑难解决方法(0)

无法从List <DerivedClass>转换为List <BaseClass>

我正在尝试将一个列表传递给一个列表的DerivedClass函数BaseClass,但是我得到了错误:

cannot convert from 
'System.Collections.Generic.List<ConsoleApplication1.DerivedClass>' 
to 
'System.Collections.Generic.List<ConsoleApplication1.BaseClass>'
Run Code Online (Sandbox Code Playgroud)

现在我可以把我List<DerivedClass>投入到一个List<BaseClass>,但我不觉得这样做,除非我理解为什么编译器不允许这样做.

我发现的解释只是说它以某种方式违反了类型安全,但我没有看到它.谁能帮我吗?

什么是编译器允许从转换的风险List<DerivedClass>List<BaseClass>


这是我的SSCCE:

class Program
{
    public static void Main()
    {
        BaseClass bc = new DerivedClass(); // works fine
        List<BaseClass> bcl = new List<DerivedClass>(); // this line has an error

        doSomething(new List<DerivedClass>()); // this line has an error
    }

    public void doSomething(List<BaseClass> bc)
    {
        // do something with bc
    }
}

class BaseClass
{
}

class DerivedClass : BaseClass
{ …
Run Code Online (Sandbox Code Playgroud)

c#

34
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×1