Constraints on Type Parameters (C# Programming Guide) --摘自MSDN

When you define a generic class, you can apply restrictions to the kinds of types
that client code can use for type arguments when it instantiates your class.
If client code attempts to instantiate your class with a type that is not allowed
by a constraint, the result is a compile-time error. These restrictions are called constraints.
Constraints are specified using the where contextual keyword.
The following table lists the six types of constraints:

Constraint Description

where T: struct

The type argument must be a value type. Any value type except Nullable can be specified. See Using Nullable Types (C# Programming Guide) for more information.

where T : class

The type argument must be a reference type, including any class, interface, delegate, or array type.

where T : new()

The type argument must have a public parameterless constructor. When used in conjunction with other constraints, the new() constraint must be specified last.

where T : <base class name>

The type argument must be or derive from the specified base class.

where T : <interface name>

The type argument must be or implement the specified interface. Multiple interface constraints can be specified. The constraining interface can also be generic.

where T : U

The type argument supplied for T must be or derive from the argument supplied for U. This is called a naked type constraint.

你可能感兴趣的:(programming)