Compilerfehler CS0311

Aktualisiert: November 2007

Fehlermeldung

Der Typ "Typ1" kann nicht als Typparameter "T" im generischen Typ oder in der generischen Methode "<Name>" verwendet werden. Es ist keine implizierte Verweiskonvertierung von "Typ1" in "Typ2" vorhanden.
The type 'type1' cannot be used as type parameter 'T' in the generic type or method '<name>'. There is no implicit reference conversion from 'type1' to 'type2'.

Wenn auf einen generischen Typparameter eine Einschränkung angewendet wird, muss eine implizite Identitäts- oder Verweiskonvertierung vom konkreten Argument in den Typ der Einschränkung vorhanden sein.

So beheben Sie diesen Fehler

  1. Ändern Sie das verwendete Argument so, dass die Klasse erstellt wird.

  2. Wenn Sie Eigentümer der Klasse sind, können Sie die Einschränkung entfernen oder Maßnahmen ergreifen, um eine implizite Verweis- bzw. Identitätskonvertierung zu ermöglichen. So können Sie beispielsweise dafür sorgen, dass der zweite Typ vom ersten Typ erbt.

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

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

Falls dieser Fehler auftritt, wenn Sie versuchen, ein Werttypargument zu verwenden, denken Sie daran, dass eine implizite numerische Konvertierung, zum Beispiel von short in int, die Anforderungen eines generischen Typparameters nicht erfüllt.

Community-Beiträge

Anzeigen: