Compilerfout CS0313
Het type 'type1' kan niet worden gebruikt als typeparameter 'parameternaam' in het algemene type of methode 'type2'. Het null-type 'type1' voldoet niet aan de beperking van 'type2'. Null-typen kunnen niet voldoen aan interfacebeperkingen.
Een waardetype dat null kan worden gebruikt, is niet gelijk aan zijn niet-null-equivalent. In het volgende voorbeeld voldoet aan de beperking, ImplStruct
maar ImplStruct?
niet omdat Nullable<ImplStruct>
deze niet wordt geïmplementeerdBaseInterface
.BaseInterface
Als u de volgende code als voorbeeld gebruikt, moet u een gewoon
ImplStruct
argument opgeven als het eerste type argument in de aanroep naarTestMethod
. WijzigTestMethod
vervolgens om een null-versie vanImplstruct
in de retourinstructie te maken:return new Nullable<T>(t);
Met de volgende code wordt CS0313 gegenereerd:
// 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()
{ }
}
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven: