//пример перегрузки бинарных операторов
using System;
//класс дляхранения трехмерных координат
class ThreeD
{
int x, y, z; //трехмерные координаты
public ThreeD() { x = y = z = 0; }
public ThreeD(int i, int j, int k) { x = i; y = j; z = k; }
//перегрузить бинарный оператор +
public static ThreeD operator +(ThreeD op1, ThreeD op2)
{
ThreeD result = new ThreeD();
// сложить коордитаны двух точек и возвратить результат.
result.x = op1.x + op2.x; //эти операторы выполняют
result.y = op1.y + op2.y; //целочисельное сложение,
result.z = op1.z + op2.z; //сохраняя свое исходное назначение.
return result;
}
//перегрузить бинарный оператор -.
public static ThreeD operator -(ThreeD op1, ThreeD op2)
{
ThreeD result = new ThreeD();
//обратить внимание на порядок следования операндов:
//op1 - левый операнд, а op2 - правый операнд.
result.x = op1.x - op2.x;//эти операторы
result.y = op1.y - op2.y;//выполняют целочисленное
result.z = op1.z - op2.z;//вычитание
return result;
}
//вывести координаты X, Y, Z.
public void Show()
{
Console.WriteLine(x + ", " + y + ", " + z);
}
}
class ThreeDDemo
{
static void Main()
{
ThreeD a = new ThreeD(1, 2, 3);
ThreeD b = new ThreeD(10, 10, 10);
ThreeD c;
Console.Write("Координаты точки а: ");
a.Show();
Console.WriteLine();
Console.Write("Координаты точки b: ");
|
|
b.Show();
Console.WriteLine();
c = a + b; //сложить координаты точек a and b
Console.Write("Результать сложения c = a + b: ");
c.Show();
Console.WriteLine();
c = a + b + c; // сложить координаты точек а, b и с
Console.Write("Результат сложения a + b + c: ");
c.Show();
Console.WriteLine();
c = c - a; //вычесть координаты точки a
Console.Write("Результать вычитания c - a: ");
c.Show();
Console.WriteLine();
c = c - b;//вычесть координаты точки b
Console.Write("Результать вычитания c - b: ");
c.Show();
Console.WriteLine();
}
}
Обратите внимание на то, что метод operator+() возвращает объект типа ThreeD. Этот метод мог бы возвратить значение любого допустимого в C# типа, но благодаря тому что он возвращает объект типа ThreeD, оператор + можно использовать в таких составных выражениях, как a+b+с.