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