What does the keyword “where” in a class declaration do?

前端 未结 7 1144
天涯浪人
天涯浪人 2020-12-17 17:24

I\'m looking at the source code for the MvcContrib Grid and see the class declared as:

public class Grid : IGrid where T : class

相关标签:
7条回答
  • 2020-12-17 18:02

    It restricts T to be a reference type, including any class, interface, delegate, or array type.

    0 讨论(0)
  • 2020-12-17 18:05

    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.

    0 讨论(0)
  • 2020-12-17 18:06

    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)

    0 讨论(0)
  • 2020-12-17 18:06

    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.

    0 讨论(0)
  • 2020-12-17 18:09

    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

    0 讨论(0)
  • 2020-12-17 18:19

    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.

    0 讨论(0)
提交回复
热议问题