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.
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:C#return new Nullable<T>(t);
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()
{ }
}
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: