public static bool operator true(ThreeD op) { if((op.x != 0) M (op.y != 0) || (op.z != 0))
return true; // хотя бы одна координата не равна нулю else
return false;
}
// Перегрузить оператор false.
public static bool operator false(ThreeD op) { if((op.x == 0) && (op.y == 0) && (op.z == 0))
return true; // все координаты равны нулю
else
return false;
}
// Перегрузить унарный оператор —. public static ThreeD operator —(ThreeD op)
{
ThreeD result = new ThreeD;
// Возвратить результат декрементирования, result.x = op.x - 1; result.у = op.y - 1; result.z = op.z - 1;
return result;
}
// Вывести координаты X, Y, Z. •
public void Show
{
Console.WriteLine(х + ", " + у + ", " + z);
}
}
class TrueFalseDemo { static void Main {
ThreeD a = new ThreeD (5, 6, 7);
ThreeD b = new ThreeD(10, 10, 10);
ThreeD с = new ThreeD(0, 0, 0);
Console.Write("Координаты точки a: ");
a.Show;
Console.Write("Координаты точки b: ");
b.Show;
Console.Write("Координаты точки с: ");
c.Show ;
Console.WriteLine;
if(a) Console.WriteLine("Точка а истинна."); else Console.WriteLine("Точка а ложна.");
if(b) Console.WriteLine("Точка b истинна."); else Console.WriteLine("Точка b ложна.");
if(с) Console.WriteLine("Точка с истинна."); else Console.WriteLine("Точка с ложна.");
Console.WriteLine;
Console.WriteLine("Управление циклом с помощью объекта класса ThreeD.") ; do {
b.Show; b—;
} while(b);
}
}
Выполнение этой программы приводит к следующему результату.
Координаты точки а: 5, 6, 7 Координаты точки Ь: 10, 10, 10 Координаты точки с: 0, 0, 0
Точка а истинна Точка b истинна Точка с ложна
Управление циклом с помощью объекта класса ThreeD.
10, 10, 10
9, 9, 98, 8, 87,
Обратите внимание на то, как объекты классаThreeDиспользуются для управления условным операторомifи оператором циклаdo-while.Так, в операторахifобъект типаThreeDпроверяется с помощью оператораtrue.Если результат этой проверки оказывается истинным, то операторi fвыполняется. А в операторе циклаdo-whileобъектbдекрементируется на каждом шаге цикла. Следовательно, цикл повторяется до тех пор, пока проверка объекта b дает истинный результат, т.е. этот объект содержит хотя бы одну ненулевую координату. Если же окажется, что объектbсодержит все нулевые координаты, его проверка с помощью оператораtrueдаст ложный результат и цикл завершится.
Перегрузка логических операторов