Hi,
感谢你在MSDN论坛发帖。
>>" Base2bb2
= new
Base2<object>()
{}; "
你能告诉编译器抛出什么样的错误, 根据我对泛型的理解,后面new的时候是一个泛型,那么new出来的对象应该赋值给一个泛型的对象。
如果你在泛型中使用协变和逆变,通过看CLR代码,你会发现一个关键字out 和 in.
out 是针对协变,这属性只能被外部使用,只能作为返回值,中途不能修改,那么你就不可能使用set 方法来设置这个变量。
in 是针对逆变,这个代表是作为输入, 只能作为参数输入,并不能返回,那么就不可以get 它。
在泛型中使用 协变和逆变,只是对泛型参数进行修饰,并不代表泛型父类和泛型子类的转换,在逆变的时候。
协变和逆变只是一种约束而已,这种规范限制了你的泛型接口中要么只能有将类型参数当作返回值的协变相容方法(加了 out 关键字),要么只能有将类型参数当作输入值的逆变相容方法(加了 in 关键字)。
Best Regards,
Hart
如果你的问题解决了,请及时标记有用的回复作为答案,这样会帮助遇到相同问题的人。
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints
to MSDN Support, feel free to contact MSDNFSF@microsoft.com.