C# Language Tipo de restricciones (clase y estructura)


Ejemplo

Es posible especificar si el argumento de tipo debe ser un tipo de referencia o un tipo de valor utilizando la class o struct restricciones respectivas. Si se usan estas restricciones, deben definirse antes de que se puedan enumerar todas las demás restricciones (por ejemplo, un tipo principal o 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
    {
    }
}