Il existe deux opérateurs bizarres en C# :
- le site véritable opérateur
- le site faux opérateur
Si je comprends bien, ces opérateurs peuvent être utilisés dans des types que je veux utiliser à la place d'une expression booléenne et où je ne veux pas fournir une conversion implicite en bool.
Disons que j'ai une classe suivante :
public class MyType
{
public readonly int Value;
public MyType(int value)
{
Value = value;
}
public static bool operator true (MyType mt)
{
return mt.Value > 0;
}
public static bool operator false (MyType mt)
{
return mt.Value < 0;
}
}
Je peux donc écrire le code suivant :
MyType mTrue = new MyType(100);
MyType mFalse = new MyType(-100);
MyType mDontKnow = new MyType(0);
if (mTrue)
{
// Do something.
}
while (mFalse)
{
// Do something else.
}
do
{
// Another code comes here.
} while (mDontKnow)
Cependant, dans tous les exemples ci-dessus, seul l'opérateur true est exécuté. Alors à quoi sert l'opérateur false en C# ?
_Note : D'autres exemples peuvent être trouvés aquí , aquí et aquí ._