2

谁能告诉我两者的区别

public T Get<T>(int id)

public T Get(int id)
4

3 回答 3

7

相比:

class First
{
    public T Get<T>(int id) // T is declared in the method scope
    {
    }
}

class Second<T>
{
    public T Get(int id) // T is declared in the class scope
    {
    }
}

还有第三种情况:

class Third<U>
{
    public T Get<T>(int id) // T is declared in the method scope when class scope has another generic argument declared
    {
    }
}
于 2012-06-25T11:31:33.110 回答
4

不同之处在于,如果之前没有定义 T,则使用第一种类型的声明。IE。

public class MyClass
{
    public T Get<T>(int id);
}

第二个,当 T 已经在类级别定义时。IE。

public class MyClass<T>
{
    public T Get(int id);
}

在这种情况下,您还可以使用第一种类型的声明 - 这实际上是简写。效果没有区别。

编辑实际上,第二个声明只要求 T 在范围内,另一个示例是嵌套类,如...

public class MyClass<T>
{
  public class NestedClass
  {
    public T Get(int i);
  }
}
于 2012-06-25T11:42:34.557 回答
0

在代码中使用泛型之前,请先阅读泛型。

于 2012-06-25T11:42:02.283 回答