【问题标题】: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&lt;int&gt;,那么您没有任何可以使用的实现!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2011-05-01
        • 1970-01-01
        相关资源
        最近更新 更多