Freigeben über


Compilerfehler CS0312

Der Typ "Typ1" kann nicht als Typparameter "Name" im generischen Typ oder in der generischen Methode "Name" verwendet werden. Der Typ "Typ1", der NULL-Werte zulässt, entspricht nicht der Einschränkung von "Typ2".

Ein Nullwerte zulassender Typ unterscheidet sich von seinem Gegenstück, das keine Nullwerte zulässt. Es gibt keine implizite Verweis- oder Identifizierungskonvertierung zwischen diesen beiden. Eine Boxing-Konvertierung, die NULL-Werte zulässt, erfüllt keine generische Typeinschränkung. Im folgenden Beispiel ist der erste Typparameter ein Nullable<int> und der zweite Typparameter ein System.Int32.

So beheben Sie diesen Fehler

  1. Entfernen Sie die Einschränkung.

  2. Im folgenden Beispiel müssen Sie das zweite Typargument entweder mit int? oder mit objectdeklarieren.

Beispiel

Mit dem folgenden Code wird CS0312 generiert:

// cs0312.cs  
class Program  
{  
    static void MTyVar<T, U>() where T : U { }  
  
    static int Main()  
    {  
        MTyVar<int?, int>(); // CS0312  
        return 1;  
    }  
}  

Obwohl sich ein Nullwerte zulassender Typ von einem Typ Non-Nullable-unterscheidet, sind verschiedene Arten von Konvertierungen zwischen Werten, die NULL zulassen, und Werten, die NULL nicht zulassen, zulässig.

Siehe auch