为什么这不可能?
abstract class A
{
public abstract T f<T>();
}
class B<T> : A
{
public override T f()
{
return default (T);
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
does not implement inherited abstract member 'A.f<T>()'
no suitable method found to override
Run Code Online (Sandbox Code Playgroud)
我知道签名必须是相同的,但从我的角度来看,我认为没有理由这是不允许的.另外我知道另一个解决方案是制作A通用的,而不是它的方法,但由于某些原因它不适合我.
这是不可能的,因为这些方法具有不同的签名.A.f是泛型方法而B.f不是(它只使用类泛型参数).
你可以从调用者的角度看这个形式:
A variableA = new A();
variableA.f<int>();
B<int> variableB = new B<int>();
variableB.f();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3751 次 |
| 最近记录: |