我正在查看MvcContrib Grid的源代码,并看到声明为的类:
public class Grid<T> : IGrid<T> where T : class
where T : class
位做什么?
答案 0 :(得分:19)
答案 1 :(得分:3)
来自文档http://msdn.microsoft.com/en-us/library/d5x73970.aspx
其中T:class
type参数必须是引用类型;这也适用于任何类,接口,委托或数组类型。
答案 2 :(得分:3)
另一个例子是
public A<T> where T : AnInterface
其中AnInterface
是接口类。这意味着,T
必须实现此接口。
这些约束很重要,因此编译器知道对该类型有效的操作。例如,如果不告诉编译器类型提供的函数,就不能调用T
的函数。
答案 3 :(得分:2)
它是对type参数的约束,它表示T可以是类或接口,但不能是枚举或结构。所以T必须是引用类型而不是值类型。
最诚挚的问候,
Oliver Hanappi
答案 4 :(得分:1)
答案 5 :(得分:1)
您可以对客户端代码在实例化类时将其用于类型参数的类型类型的限制称为Constraints on Type Parameters
例如:T:class
这里T
是Type,type参数必须是引用类型;这也适用于任何类,接口,委托或数组类型。
答案 6 :(得分:1)
这是一种通用类型约束。它指定类型T
必须是引用类型,即类而不是结构。