interface<T> where T : class
例如
public interface iSend<T> where T : class
以上代码是什么意思?
为什么要使用这个代码?
何时使用这个代码?
请查看完整文章:自定义泛型类型的约束条件,其中讨论了不同类型的泛型约束。
这是引用类型约束。
约束确保类型参数为引用类型。即类、接口、委托、数组等。
interface iSend<T> where T : class
示例
Valid InValid
A<MyClass> A<int>
A<InterfaceME> A<float>
A<float[]>
从文档中:
类型参数限制
当定义一个泛型类时,你可以对客户端代码在实例化类时使用的类型参数的种类应用限制条件。如果客户端代码尝试使用不被限制允许的类型来实例化你的类,则会产生编译时错误。这些限制条件称为约束。
...
where T : class
: 类型参数必须是引用类型;这同样适用于任何类、接口、委托或数组类型。
如果使用此约束,那么T
必须是引用类型(不能是值类型)。
你可以这样做以便能够使用null
,因为引用类型可以是null
而值类型则不能。
这些被称为通用类型约束。
上面的代码意味着,您有一个通用接口iSend
,它只接受引用类型作为类型参数。
当您想要限制iSend
的类型参数为引用类型时。