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

我可以使用泛型类型参数作为返回类型吗?

  •  1
  • Creyke  · 技术社区  · 7 年前

    如果我有一个带有一个或多个泛型参数的接口。。。

    interface IFoo<T1, T2> {}
    

    static IFoo.T2 Grab(IFoo<T1, T2> foo)
    {
        // TODO: return something.
    }
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   MakePeaceGreatAgain    7 年前

    那要看你怎么定义 T1 T2

    1. 使包含静态方法的类成为泛型:

      class MyClass<T1, T2>
      {
          static T2 Grab(IFoo<T1, T2> foo) { ... }
      }
      
    2. 仅使方法本身成为泛型:

      static T2 Grab<T1, T2>(IFoo<T1, T2> foo) { ... }
      

    在这两种情况下,都不能简单地使用 IFoo