代码之家  ›  专栏  ›  技术社区  ›  eaglestorm

C.NET通用方法和继承

  •  6
  • eaglestorm  · 技术社区  · 16 年前

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

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

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

    2 回复  |  直到 16 年前
        1
  •  7
  •   Jordão    16 年前

    类型参数应与类型一起声明,子类将在其继承声明中声明特定类型:

    public abstract class A<T>
    { 
        public abstract T MethodB(string s); 
    } 
    
    public class C: A<DateTime> 
    { 
        public override DateTime MethodB(string s) 
        { 
            ...
        } 
    } 
    
        2
  •  1
  •   Tomas Petricek    16 年前

    不。

    原因是您将只为一个特殊情况提供实现。基类要求您实现 MethodB 可以适用于任何类型的 T . 如果你只为 DateTime 例如,如果有人打电话, ((A)obj).MethodB<int> 那么您就没有任何可以使用的实现了!