C#.NET 泛型方法和继承

6
在C#.NET中,使用泛型是否可以实现以下操作?
public abstract class A
{
    public abstract T MethodB<T>(string s);
}

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

即在基类中具有一个通用方法,然后在子类中使用特定类型来调用该方法。

2个回答

7

类型参数应该在类型中声明,子类将在其继承声明中声明具体类型:

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

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

1

不行。

原因是你只为一种特殊情况提供实现。基类要求你实现一个可以用于任何类型 TMethodB。如果你只为 DateTime 实现它,如果有人调用 ((A)obj).MethodB<int>,那么你就没有可用的实现了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接