C#: No implict conversion from Class to Class<Base>

后端 未结 4 1401
失恋的感觉
失恋的感觉 2020-12-03 20:10

Following snippet wouldn\'t compile. With following error:

Cannot implicitly convert type \'Container\' to \'Container

4条回答
  •  一生所求
    2020-12-03 20:40

    (made wiki, in case of dups)

    C# (3.0) doesn't support covariance of lists etc. C# 4.0 will support limited [co|contra]variance, but still not lists.

    The problem is that with:

    Container obj = new Container(); 
    

    I could do:

    obj.Add(new SomeOtherSubclass()); // SomeOtherSubclass : BaseClass
    

    which would compile, but not work.

    This behaviour is supported for arrays, but largely for historic reasons.

提交回复
热议问题