任何人都可以告诉我
之间的区别public T Get<T>(int id)
和
public T Get(int id)
答案 0 :(得分: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
{
}
}
答案 1 :(得分:4)
不同之处在于,如果之前未定义T,则使用第一种类型的声明。即
public class MyClass
{
public T Get<T>(int id);
}
当T已经在班级定义时,第二个。即
public class MyClass<T>
{
public T Get(int id);
}
在这种情况下,您还可以使用第一种声明 - 这实际上是速记。效果没有区别。
编辑实际上,第二个声明只要求T在范围内,另一个例子是嵌套类,如...
public class MyClass<T>
{
public class NestedClass
{
public T Get(int i);
}
}
答案 2 :(得分:0)
在您可以在代码中使用它们之前,请阅读Generics。