0

我可以在 C# 的基类中声明的派生类型上传播通用约束吗?

示例程序显示错误:

类型“T”不能用作泛型类型或方法“Test.Base”中的类型参数“T”。没有从“T”到“Test.IBase”的装箱转换或类型参数转换。

interface IBase
{

}

class Base<T> where T : IBase
{


}

class Derived<T> : Base<T>
{

}
4

3 回答 3

4
class Derived<T> : Base<T> where T : IBase
{

}
于 2013-03-27T09:29:59.197 回答
1

在您的Derived<T>课程中,您没有指定T必须实现IBase的内容,并且因为它被用作类型参数,Base<T>所以您不能说任何T可以使用。将其更改为:

class Derived<T> : Base<T> where T : IBase
于 2013-03-27T09:30:42.900 回答
0

应该:

class Derived<T> : Base<T> where T : IBase
{

}

始终明确地放置您的约束,因为 T 只是一个声明,它与您的基类中的 T 不同。

于 2013-03-27T09:30:32.873 回答