c#泛型约束问题
本文关键字:问题 约束 泛型 | 更新日期: 2023-09-27 18:06:08
可以在c#基类中声明的派生类型上传播泛型约束吗?
程序显示错误:
类型'T'不能用作泛型类型中的类型参数'T'或者方法Test.Base。没有装箱转换或类型参数从'T'转换为'Test.IBase'.
interface IBase
{
}
class Base<T> where T : IBase
{
}
class Derived<T> : Base<T>
{
}
class Derived<T> : Base<T> where T : IBase
{
}
在您的Derived<T>
类中,您没有指定T
必须实现IBase
,并且因为它在Base<T>
中用作类型参数,所以您不能说任何T
都可以使用。改成这样:
class Derived<T> : Base<T> where T : IBase
应该是:
class Derived<T> : Base<T> where T : IBase
{
}
总是显式地放置约束,因为T只是一个声明,它与基类中的T不同。