C# Language Vincoli di tipo (classe e struct)

Esempio

È possibile specificare se l'argomento type debba essere un tipo di riferimento o un tipo di valore utilizzando la rispettiva class vincoli o struct . Se questi vincoli vengono utilizzati, devono essere definiti prima di poter elencare tutti gli altri vincoli (ad esempio un genitore o un new() ).

// TRef must be a reference type, the use of Int32, Single, etc. is invalid.
// Interfaces are valid, as they are reference types
class AcceptsRefType<TRef>
    where TRef : class
{
    // TStruct must be a value type.
    public void AcceptStruct<TStruct>()
        where TStruct : struct
    {
    }

    // If multiple constraints are used along with class/struct
    // then the class or struct constraint MUST be specified first
    public void Foo<TComparableClass>()
        where TComparableClass : class, IComparable
    {
    }
}