簡體   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