在C#继承'where'

时间:2012-09-02 08:33:39

标签: c# generics

任何人请详细解释以下代码:

internal class InternalClientProxy<TInterface> : 
    ClientBase<TInterface> where TInterface : class

3 个答案:

答案 0 :(得分:1)

这是一种通用类型约束。在这种情况下

where T : class

表示T应该是引用类型。

有关约束的详细信息,请参阅此处:Constraints on Type Parameters (C# Programming Guide)

答案 1 :(得分:1)

这意味着您只能在InternalClientProxy

中使用参考类型

一些有用的链接,以便更好地理解

MSDN1 MSDN2

答案 2 :(得分:1)

要跟进我的评论,documentation会解释语法。

  

类型参数的约束(C#编程指南)

     

定义泛型类时,可以对实例化类时客户端代码可用于类型参数的类型类型应用限制。如果客户端代码尝试使用约束不允许的类型来实例化您的类,则结果是编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的。下表列出了六种类型的约束:

     

...

     

where T : class type参数必须是引用类型;这也适用于任何类,接口,委托或数组类型。

没有约束,通用代码的行为可能会有所不同(除其他外),具体取决于TInterface是表示值还是引用类型。