Sdílet prostřednictvím


Compilerfehler CS0312

Aktualisiert: November 2007

Fehlermeldung

Der Typ "Typ1" kann in dem/r generischen Typ oder Methode "Name" nicht als Typparameter "Name" verwendet werden. Der Typ "Typ1", der NULL-Werte zulässt, entspricht nicht der Einschränkung von "Typ2".
The type 'type1' cannot be used as type parameter 'name' in the generic type or method 'name'. The nullable type 'type1' does not satisfy the constraint of 'type2'.

Ein Typ, der NULL-Werte zulässt, unterscheidet sich von seinem Gegenstück, das keine NULL-Werte zulässt. Zwischen den beiden besteht keine implizite Verweiskonvertierung oder Identifizierungskonvertierung. Eine Boxing-Konvertierung, die NULL-Werte annehmen kann, erfüllt keine generische Typeinschränkung. Im folgenden Beispiel ist der erste Typparameter Nullable<int> und der zweite Typparameter System.Int32.

So beheben Sie diesen Fehler

  1. Entfernen Sie die Einschränkung.

  2. Machen Sie im folgenden Beispiel das zweite Typargument entweder zu int? oder zu object.

Beispiel

Durch den folgenden Code wird der Fehler CS0312 ausgelöst:

// cs0312.cs
class Program
{
    static void MTyVar<T, U>() where T : U { }

    static int Main()
    {
        MTyVar<int?, int>(); // CS0312
        return 1;
    }
}

Obwohl sich ein Typ, der NULL-Werte zulässt, von einem Typ, der keine NULL-Werte zulässt, unterscheidet, sind verschiedene Arten der Konvertierung zwischen diesen Werten möglich.

Siehe auch

Referenz

Typen, die NULL-Werte zulassen (C#-Programmierhandbuch)