Il y a deux opérateurs étranges en C #:
Si je comprends ce droit, ces opérateurs peuvent être utilisés dans des types que je souhaite utiliser à la place d'une expression booléenne et où je ne souhaite pas fournir une conversion implicite en booléen.
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, pour tous les exemples ci-dessus, seul l'opérateur vrai est exécuté. Alors, à quoi sert le faux opérateur en C #?
Remarque: D'autres exemples peuvent être trouvés ici , ici et ici .