爲什麼這是不可能的?C#:使用類泛型參數覆蓋泛型方法
abstract class A
{
public abstract T f<T>();
}
class B<T> : A
{
public override T f()
{
return default (T);
}
}
錯誤:
does not implement inherited abstract member 'A.f<T>()'
no suitable method found to override
我知道,簽名必須是相同的,但是從我的角度我認爲沒有理由怎麼可能是錯的,這是被禁止的。 另外我知道另一個解決方案是使A
泛型,而不是它的方法,但它由於某種原因不適合我。
> B只允許f用B的類型參數調用 B根本沒有通用方法'f'所以B甚至不允許f用B的類型參數調用 –
@RuneFS我不是那個意思從字面上;我會更清楚。 – Rawling
很好的答案...我認爲這是以最好的方式解釋原因。 – Zoka