Mik*_*keb 0 c# generics polymorphism inheritance
说我上课了:
abstract class A<T> {
public abstract void foo(T a);
}
class B : A<int> {
public void foo(int a) { //ERROR, signature is not correct
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下如何实现基类?参数的类型应为int.
正如其他人所指出的那样,您缺少override关键字.
但是,我想提醒您对这种模式要非常小心.如果你不小心,你可以让自己陷入一个受伤的世界:
class B<T>
{
public virtual void M(T t) {}
public virtual void M(int x) {}
}
class D : B<int>
{
public override void M(int x) {}
}
Run Code Online (Sandbox Code Playgroud)
它覆盖了哪一个?
这种情况没有任何好处.CLR规范建议您永远不要陷入两种方法签名在通用构造下统一的情况.好的建议,那.