Compilerfehler CS0313
Der Typ "type1" kann nicht als Typparameter "parameter name" im generischen Typ oder in der generischen Methode "type2" verwendet werden. Der Typ "Typ1", der NULL-Werte zulässt, entspricht nicht der Einschränkung von "Typ2". Typen, die NULL-Werte zulassen, können Schnittstelleneinschränkungen nicht entsprechen.
Ein Typ, der NULL-Werte zulässt, entspricht nicht dem zugehörigen Typ, der nicht auf NULL festgelegt werden kann. Im folgenden Beispiel entspricht ImplStruct
der BaseInterface
-Einschränkung, ImplStruct?
hingegen nicht, da Nullable<ImplStruct>
nicht BaseInterface
implementiert.
So beheben Sie diesen Fehler
Bei Verwendung des folgenden Codes als Beispiel besteht eine Lösung darin, eine normale
ImplStruct
als erstes Typargument im Aufruf derTestMethod
zu verwenden. Bearbeiten Sie dann dieTestMethod
, um eine Version derImplstruct
in der zugehörigen Rückgabeanweisung zu erstellen, die Nullwerte zulässt:return new Nullable<T>(t);
Beispiel
Durch den folgenden Code wird der Fehler CS0313 ausgelöst:
// cs0313.cs
public interface BaseInterface { }
public struct ImplStruct : BaseInterface { }
public class TestClass
{
public T? TestMethod<T, U>(T t) where T : struct, U
{
return t;
}
}
public class NullableTest
{
public static void Run()
{
TestClass tc = new TestClass();
tc.TestMethod<ImplStruct?, BaseInterface>(new ImplStruct?()); // CS0313
}
public static void Main()
{ }
}
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