2010-05-20 109 views
6

是否有可能做與C#.NET泛型以下C#.NET泛型方法和繼承

public abstract class A 
{ 
    public abstract T MethodB<T>(string s); 
} 

public class C: A 
{ 
    public override DateTime MethodB(string s) 
    { 
    } 
} 

即有一個基類的通用方法,然後使用特定類型的那個方法子類。

回答

7

的類型參數應與類型聲明,並且子類將在其繼承聲明中聲明特定類型:

public abstract class A<T> 
{ 
    public abstract T MethodB(string s); 
} 

public class C: A<DateTime> 
{ 
    public override DateTime MethodB(string s) 
    { 
     ... 
    } 
} 
+0

很酷的作品謝謝。 – eaglestorm 2010-05-20 02:16:38

1

的原因是,你會只提供執行一個特例。基類要求你實現一個MethodB,它可以用於任何類型的T。如果你只爲DateTime實現它,並且如果有人呼叫,例如,((A)obj).MethodB<int>那麼你沒有任何可以使用的實現!