interface<T> where T : class
例如
public interface iSend<T> where T : class
上述代码是什么意思?
为什么要使用它?
何时使用?
答案 0 :(得分:5)
来自docs:
类型参数的约束
定义泛型类时,可以对实例化类时客户端代码可用于类型参数的类型类型应用限制。如果客户端代码尝试使用约束不允许的类型来实例化您的类,则结果是编译时错误。这些限制称为约束 ...
where T : class
:type参数必须是引用类型;这也适用于任何类,接口,委托或数组类型。
如果使用此约束,则T
必须是引用类型(并且没有值类型)。
你这样做,例如能够使用null
,因为引用类型可以是null
而值类型不能。{/ p>
答案 1 :(得分:5)
在此处查看我的完整帖子:Constrain on custom generic type,其中讨论了不同类型的通用约束
参考类型约束
约束确保类型参数是引用类型。即类,接口,代表,数组等。
interface iSend<T> where T : class
实施例
Valid InValid
A<MyClass> A<int>
A<InterfaceME> A<float>
A<float[]>
注意: 当应用多个约束时,总是先到。
答案 2 :(得分:2)
称为泛型类型约束。
上面的代码表示你有一个通用接口iSend
,它只需要一个引用类型作为类型参数
如果要将iSend
的类型参数限制为引用类型