class ThreeDDemo { static void Main { ThreeD a = new ThreeD(5, 6, 7); ThreeD b = new ThreeD(10, 10, 10); ThreeD с = new ThreeD(1, 2, 3); ThreeD d = new ThreeD(6, 7, 5); Console.Write("Координаты точки a: "); a.Show; Console.Write("Координаты точки b: "); b.Show; Console.Write("Координаты точки с: "); c.Show; Console.Write("Координаты точки d: "); d.Show; Console.WriteLine; if(а > с) Console.WriteLine("а > с истинно"); if(а < с) Console.WriteLine("а < с истинно"); if(а > b) Console.WriteLine("а > b истинно"); if(а < b) Console.WriteLine("а < b истинно"); if(а > d) Console.WriteLine("а > d истинно"); else if(а < d) Console.WriteLine("a < d истинно"); else Console.WriteLine("Точки a и d находятся на одном расстоянии " + "от начала отсчета"); }
} Вот к какому результату приводит выполнение этого кода.
Координаты точки а: 5, 6, 7 Координаты точки b: 10, 10, 10 Координаты точки с: 1, 2, 3 Координаты точки d: 6, 7, 5 а > с истинно а < b истинно Точки a и d находятся на одном расстоянии от начала отсчета На перегрузку операторов отношения накладывается следующее важное ограни чение: они должны перегружаться попарно. Так, если перегружается оператор <, то следует перегрузить и оператор >, и наоборот. Ниже приведены составленные в пары перегружаемые операторы отношения. == != < > <= >=
И еще одно замечание: если перегружаются операторы == и !=, то для это го обычно требуется также переопределить методы Object.Equals и Object. GetHashCode. Эти методы и способы их переопределения подробнее рассматри ваются в главе 11. Перегрузка операторов true и false
Ключевые слова true и false можно также использовать в качестве унарных опе раторов для целей перегрузки. Перегружаемые варианты этих операторов позволяют определить назначение ключевых слов true и false специально для создаваемых клас сов. После перегрузки этих ключевых слов в качестве унарных операторов для конкрет ного класса появляется возможность использовать объекты этого класса для управления операторами if, while, for и do-while или же в условном выражении ?.
Операторы true и false должны перегружаться попарно, а не раздельно. Ниже приведена общая форма перегрузки этих унарных операторов. public static bool operator true(тип_параметра операнд) { // Возврат логического значения true или false. } public static bool operator false(тип_параметра операнд) { // Возврат логического значения true или false. }
Обратите внимание на то, что и в том и в другом случае возвращается результат типа bool.