Erreur du compilateur CS0217
Pour être applicable en tant qu’opérateur de court-circuit, un opérateur logique défini par l’utilisateur ('operator') doit posséder le même type de retour que le type de ses 2 paramètres.
Si vous définissez un opérateur pour un type défini par l’utilisateur, et essayez d’utiliser l’opérateur comme opérateur de court-circuit, l’opérateur défini par l’utilisateur doit avoir des paramètres et des valeurs de retour du même type. Pour plus d’informations sur les opérateurs de court-circuit, consultez opérateur &&
et opérateur ||
. Pour plus d’informations sur le court-circuit défini par l’utilisateur ou les opérateurs conditionnels, consultez la section Opérateurs logiques conditionnels définis par l’utilisateur de la spécification du langage C#.
L’exemple suivant génère l’erreur CS0217 :
// CS0217.cs
using System;
public class MyClass
{
public static bool operator true (MyClass f)
{
return false;
}
public static bool operator false (MyClass f)
{
return false;
}
public static implicit operator int(MyClass x)
{
return 0;
}
public static int operator & (MyClass f1, MyClass f2) // CS0217
// try the following line instead
// public static MyClass operator & (MyClass f1, MyClass f2)
{
return new MyClass();
}
public static void Main()
{
MyClass f = new MyClass();
int i = f && f;
}
}
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :