Compilerfehler CS0311Compiler Error CS0311

Der Typ „type1“ kann nicht als Typparameter „T“ im generischen Typ oder in der generischen Methode „<name>“ verwendet werden.The type 'type1' cannot be used as type parameter 'T' in the generic type or method '<name>'. Es findet keine implizite Verweiskonvertierung von „type1“ in „type2“ statt.There is no implicit reference conversion from 'type1' to 'type2'.

Wenn eine Einschränkung auf einen generischen Typparameter angewendet wird, muss eine implizite Identitäts- oder Verweiskonvertierung aus dem konkreten Argument in den Typ der Einschränkung vorliegen.When a constraint is applied to a generic type parameter, an implicit identity or reference conversion must exist from the concrete argument to the type of the constraint.

So beheben Sie diesen FehlerTo correct this error

  1. Ändern Sie das Argument, das Sie zum Erstellen der Klasse verwenden.Change the argument you are using to create the class.

  2. Wenn Sie die Klasse besitzen, können Sie die Einschränkung entfernen oder ansonsten Maßnahmen ergreifen, um eine implizite Verweis- oder Identitätskonvertierung zu ermöglichen.If you own the class, you can remove the constraint or else do something to enable an implicit reference or identity conversion. Beispielsweise können Sie den zweiten Typ vom ersten erben lassen.For example, you can make the second type inherit from the first.

BeispielExample

// cs0311.cs  
class B{}  
class C{}  
class Test<T> where T : C  
{ }  

class Program  
{  
    static void Main()  
    {  
        Test<B> test = new Test<B>(); //CS0311  
    }  
}  

Wenn dieser Fehler bei dem Versuch auftritt, ein Werttyp-Argument zu verwenden, beachten Sie, dass eine implizite numerische Konvertierung, beispielsweise von short in int, einem Parameter des generischen Typs nicht genügt.If this error occurs when trying to use a value-type argument, notice that an implicit numeric conversion, for example from short to int, does not satisfy a generic type parameter.

Siehe auchSee Also

Einschränkungen für TypparameterConstraints on Type Parameters