C#.NET通用方法和继承

时间:2010-05-20 02:09:57

标签: c# generics inheritance

是否可以在C#.NET中使用泛型执行以下操作

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

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

即。在基类中有一个泛型方法,然后在子类中使用该方法的特定类型。

2 个答案:

答案 0 :(得分:7)

应该使用类型声明type参数,子类将在其继承声明中声明特定类型:

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

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

答案 1 :(得分:1)

没有。

原因是您只为一个特例提供实施。基类要求您实现适用于任何类型MethodB的{​​{1}}。如果您仅为T实施,如果有人调用,例如DateTime,则您没有任何可以使用的实现!