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
Entfernen Sie die Einschränkung.
Im folgenden Beispiel müssen Sie das zweite Typargument entweder mit
int?
oder mitobject
deklarieren.
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für