不能从基类继承
本文关键字:继承 基类 不能 | 更新日期: 2024-08-02 00:00:35
我的代码如下
class BaseClass<T> where T : class
{
class DerivedClass<U, V>
where U : class
where V : U
{
BaseClass<V> _base;
}
}
错误:类型"V"必须是引用类型。
这里的"V"不是类型类吗??
您可以通过向V
类型参数添加class
约束来解决此问题:
class BaseClass<T> where T : class
{
class DerivedClass<U, V>
where U : class
where V : class, U
{
BaseClass<V> _base;
}
}
有关解释,请参阅Eric Lippert的文章(如Willem van Rumpt在上文中所评论的)。
这里的"V"不是类型类吗??
不,不是。V
可以是System.ValueType
或任何枚举或任何ValueType
。
您的约束只是说V
应该从U
派生,其中U
是类。它没有说V
应该是一个类。
例如,以下内容完全有效,这与约束条件where T : class
相矛盾。
DerivedClass<object, DateTimeKind> derived;
因此,您还需要添加where V : class
。
埃里克·利珀特在博客上也提出了同样的问题。