繁体   English   中英

不能从基类继承

[英]cannot inherit from base class

我的代码如下

class BaseClass<T> where T : class
{
    class DerivedClass<U, V>
        where U : class
        where V : U
    {
        BaseClass<V> _base;
    }

}

错误:类型'V'必须是引用类型。

这里不是'V'类型的类吗?

您可以通过将class约束添加到V类型参数来解决此问题:

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

埃里克·利珀特(Eric Lippert)在网志也发表了同样的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM