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

时间:2018-08-21 14:26:28

标签: c# generics return-type

如果我的接口带有一个或多个通用参数...

interface IFoo<T1, T2> {}

...是否有可能在将其作为参数的方法的返回类型中引用其一个或多个通用参数类型?

static IFoo.T2 Grab(IFoo<T1, T2> foo)
{
    // TODO: return something.
}

1 个答案:

答案 0 :(得分:4)

这取决于您在班级中如何定义T1T2。您有两个机会:

  1. 使包含静态方法的类通用:

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

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

在两种情况下,您都不能简单地使用IFoo中的泛型参数,因为从字面上看,没有 该接口的实例。即使您有这样的实例,它也与您的方法无关。

相关问题