Применение укороченных логических операторов && и || а && b истинно, а && с ложно, а И Ь истинно, а И с истинно.

Рассмотрим более подробно, каким образом реализуются логические операторы & и |. Они представлены в следующем фрагменте кода.

// Перегрузить логический оператор | для укороченного вычисления, public static ThreeD operator | (ThreeD opl, ThreeD op2)

{

else

return new ThreeD(0, 0, 0);

}

// Перегрузить логический оператор & для укороченного вычисления, public static ThreeD operator & (ThreeD opl, ThreeD op2)

{

if (    ((opl.x    !=    0)    &&    (opl.y    !=    0)    &&    (opl.z    !=    0))    &

((op2.x    !=    0)    &&    (op2.y    !=    0)    &&    (op2.z    !=    0))    )

return new ThreeD(1, 1,1); else

return new ThreeD (0, 0, 0);

Прежде всего обратите внимание на то, что методы обоих перегружаемых логических операторов теперь возвращают объект типаThreeD.И особенно обратите внимание на то, как формируется этот объект. Если логическая операция дает истинный результат, то создается и возвращается истинный объект типаThreeD,у которого хотя бы одна координата не равна нулю. Если же логическая операция дает ложный результат, то соответственно создается и возвращается ложный объект. Таким образом, результатом вычисления логического выражения а & b в следующем фрагменте кода:

if(а & b) Console.WriteLine("а & b истинно."); else Console.WriteLine("а & b ложно.");

является объект типаThreeD,который в данном случае оказывается истинным. А поскольку операторыtrueиfalseуже определены, то созданный объект типаThreeDподвергается действию оператораtrueи в конечном итоге возвращается результат типаbool.В данном случае он равенtrue,а следовательно, условный операторifуспешно выполняется.

Перейти на страницу:

Похожие книги