为什么这个继承层次结构不允许这种分配?
我有以下复杂的继承层次结构:
I1<I3>
A1 : C1, I2
C2 : A1, I3
C3 : A2<C2>, I4
A2<C2> : I5, I1<C2>
以图片形式:
写入:
I1<I3> i = new C3();
...导致编译错误“Cannot将源类型...转换为目标类型...”。
为什么?
I have the following complex inheritance hierarchy:
I1<I3>
A1 : C1, I2
C2 : A1, I3
C3 : A2<C2>, I4
A2<C2> : I5, I1<C2>
In picture form:
Writing:
I1<I3> i = new C3();
...results in the compilation error "Cannot convert source type... to target type...".
Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
协变和逆变泛型参数应明确标记为此类。
以下代码编译时不会出现错误(请注意 out 关键字):
当然,如果没有 out 关键字,它将失败并显示与您所描述的相同的错误消息。
Covariant and contravariant generic parameters should be explicitly marked as such.
The following code compiles without error (note the out keyword):
Of course, without the out keyword it fails with the same error message as you described.