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
.
Entfernen Sie die Einschränkung.
Im folgenden Beispiel müssen Sie das zweite Typargument entweder mit
int?
oder mitobject
deklarieren.
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.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: