“什么是”呢;式中T:class";在C#通用方法中?
这些方法签名之间有什么区别“什么是”呢;式中T:class";在C#通用方法中?,c#,generics,C#,Generics,这些方法签名之间有什么区别 public void T MyMethod<T>(T parameter) public void T MyMethod(T参数) 及 public void T MyMethod(T参数),其中T:class 他们似乎有相同的结果。。。那么其中T:class做什么呢?在第二种方法中,T只能是类,不能是结构类型 见: T:在哪里上课 类型参数必须是引用[class]类型;这也适用于任何类、接口、委托或数组类型 没有区别,但T仅限于引用类型。 它们仅
public void T MyMethod<T>(T parameter)
public void T MyMethod(T参数)
及
public void T MyMethod(T参数),其中T:class
他们似乎有相同的结果。。。那么
其中T:class
做什么呢?在第二种方法中,T只能是类,不能是结构类型
见:
T:在哪里上课
类型参数必须是引用[class]类型;这也适用于任何类、接口、委托或数组类型
没有区别,但T仅限于引用类型。
它们仅在编译时不同,因为编译器会检查T是否为ref类型。在第一种情况下,您可以使用非ref类型调用它
MyMethod<int>(10);
MyMethod(10);
这将不适用于第二个版本,因为它只接受ref类型
void
或T
李>
MyMethod(1)
,因为它需要t
MyMethod<int>(10);