【问题标题】:C#.NET Generic Methods and InheritanceC#.NET 泛型方法和继承
【发布时间】:2010-05-20 02:09:57
【问题描述】:
是否可以在 C#.NET 中使用泛型执行以下操作
public abstract class A
{
public abstract T MethodB<T>(string s);
}
public class C: A
{
public override DateTime MethodB(string s)
{
}
}
即在基类中有一个泛型方法,然后在子类中为该方法使用特定类型。
【问题讨论】:
标签:
c#
generics
inheritance
【解决方案1】:
类型参数要声明类型,子类会在其继承声明中声明具体类型:
public abstract class A<T>
{
public abstract T MethodB(string s);
}
public class C: A<DateTime>
{
public override DateTime MethodB(string s)
{
...
}
}
【解决方案2】:
没有。
原因是您将只为一种特殊情况提供实现。基类要求您实现一个MethodB,它可以适用于任何类型T。如果您只为DateTime 实现它,并且如果有人调用,例如((A)obj).MethodB<int>,那么您没有任何可以使用的实现!