I'm looking at the source code for the MvcContrib Grid and see the class declared as:
public class Grid<T> : IGrid<T> where T : class
What does the where T : class
bit do?
I'm looking at the source code for the MvcContrib Grid and see the class declared as:
public class Grid<T> : IGrid<T> where T : class
What does the where T : class
bit do?
It's a generic type constraint. It specifies that the type
T
has to be a reference type, i.e. a class and not a structure.It is a generic type constraint.
In this case it means that the generic type (
T
) must be a reference type, that is class, interface, delegate, or array type.Other constraints are listed here.
You can also constrain the generic type to inherit from a specific type (base class or interface)
It restricts T to be a reference type, including any class, interface, delegate, or array type.
you can apply restrictions to the kinds of types that client code can use for type arguments when it instantiates your class are called as Constraints on Type Parameters
E.g : where T : class
Here where
T
is the Type , The type argument must be a reference type; this applies also to any class, interface, delegate, or array type.It is a constraint on the type argument which says that T can either be a class or an interface but not an enum or a struct. So T must be a reference type and not a value type.
Best Regards,
Oliver Hanappi
From the Docs http://msdn.microsoft.com/en-us/library/d5x73970.aspx
where T : class
The type argument must be a reference type; this applies also to any class, interface, delegate, or array type.