(1)可以使用“基类约束”(base class constraint)来指定某个基类必须出现在类型实参中。这种约束是通过指定基类名称来实现的。
(2)可以使用“接口约束”(interface constraint)来指定某个类型实参必须实现一个或多个接口。这种约束是通过指定接口名称来实现的。
(3)可以要求类型实参必须提供一个无参数的构造函数,这被称为“构造函数约束”(constructor constraint)。它是通过new()指定的。
(4)可以通过关键字class指定“引用类型约束”(reference type constraint)来限制某个类型实参必须是引用类型。
(5)可以通过关键字struct指定“值类型约束”(vlaue type constraint)来限制某个类型实参必须是值类型。