Kompilatorfel CS0313
Typen "type1" kan inte användas som typparameterns parameternamn i den generiska typen eller metoden "type2". Den nullbara typen "type1" uppfyller inte villkoret "type2". Nullbara typer kan inte uppfylla några gränssnittsbegränsningar.
En nullbar värdetyp motsvarar inte dess icke-nullbara motsvarighet. I exemplet som följer uppfyller villkoret BaseInterface
men ImplStruct
ImplStruct?
inte eftersom Nullable<ImplStruct>
inte implementerar BaseInterface
.
Med hjälp av koden som följer som exempel är en lösning att ange ett vanligt
ImplStruct
som det första typargumentet i anropet tillTestMethod
. ÄndraTestMethod
sedan för att skapa en null-version avImplstruct
i sin retursats:return new Nullable<T>(t);
Följande kod genererar CS0313:
// 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 om .NET
.NET är ett öppen källkod projekt. Välj en länk för att ge feedback: