Chyba kompilátoru CS0313
Typ type1 nelze použít jako parametr typu "název parametru" v obecném typu nebo metodě type2. Typ s možnou hodnotou null 'type1' nesplňuje omezení typu 'type2'. Typy s možnou hodnotou null nemohou splňovat žádná omezení rozhraní.
Typ hodnoty s možnou hodnotou null není ekvivalentní jeho protějšku bez hodnoty null. V následujícím příkladu splňuje BaseInterface
omezení, ImplStruct
ale ImplStruct?
ne, protože Nullable<ImplStruct>
neimplementuje BaseInterface
.
Použití kódu, který následuje jako příklad, je jedním z řešení určit obyčejné
ImplStruct
jako první typ argumentuTestMethod
volání . Potom upravteTestMethod
, aby se ve svém návratovém příkazu vytvořila verze s možnouImplstruct
hodnotou null:return new Nullable<T>(t);
Následující kód vygeneruje 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()
{ }
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: