-9

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

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

3 回答 3

1

它是一个泛型类型约束。在这种情况下

where T : class

表示 T 应该是一个引用类型。

有关约束的详细信息,请参见此处:类型参数的约束(C# 编程指南)

于 2012-09-02T08:37:33.827 回答
1

这意味着您只能在您的InternalClientProxy

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

MSDN1 MSDN2

于 2012-09-02T08:37:58.207 回答
1

为了跟进我的评论,文档解释了语法。

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

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

...

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

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

于 2012-09-02T08:38:49.570 回答