谁能告诉我两者的区别
public T Get<T>(int id)
和
public T Get(int id)
相比:
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
{
}
}
不同之处在于,如果之前没有定义 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);
}
}
在代码中使用泛型之前,请先阅读泛型。