Erreur du compilateur CS0313
Impossible d’utiliser le type 'type1' comme paramètre de type 'parameter name' dans le type ou la méthode générique 'type2'. Le type Nullable 'type1' ne satisfait pas la contrainte de 'type2'. Les types Nullable ne peuvent satisfaire aucune des contraintes d’interface.
Un type de valeur Nullable n’est pas équivalent à son pendant non Nullable. Dans l’exemple qui suit, ImplStruct
satisfait la contrainte BaseInterface
, mais ImplStruct?
ne la satisfait pas, car Nullable<ImplStruct>
n’implémente pas BaseInterface
.
Par exemple, à l’aide du code suivant, vous pourriez spécifier un
ImplStruct
simple en tant que premier argument de type dans l’appel àTestMethod
. Ensuite, vous pourriez modifierTestMethod
pour créer une version Nullable deImplstruct
dans son instruction return :C#return new Nullable<T>(t);
Le code suivant génère l’erreur 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()
{ }
}
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :