В C # есть два странных оператора:
Если я правильно понимаю, эти операторы можно использовать в типах, которые я хочу использовать вместо логического выражения и где я не хочу обеспечивать неявное преобразование в bool.
Скажем, у меня есть следующий класс:
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;
}
}
Итак, я могу написать следующий код:
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)
Однако для всех приведенных выше примеров выполняется только истинный оператор. Так для чего нужен ложный оператор в C #?
Примечание. Дополнительные примеры можно найти здесь , здесь и здесь .