Hay dos operadores extraños en C#:¿Para qué sirve el falso operador en C#?
- la true operator
- la false operator
Si entiendo este derecho estos operadores pueden utilizarse en tipos que quiero utilizar en lugar de un valor lógico expresión y donde no deseo proporcionar una conversión implícita a bool.
Digamos que tengo una clase siguiente:
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;
}
}
, así que puede escribir el siguiente código:
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)
Sin embargo, para todos los ejemplos anteriores sólo el verdadero operador se ejecuta. Entonces, ¿para qué sirve el falso operador en C#?
Nota: Más ejemplos se pueden encontrar here, here y here.
Documentos modernos se pueden encontrar en https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/false-operator. Los documentos sugieren que no hay ninguna razón para definir este operador más ya que C# 2.0 agregó tipos anulables. –