// Перегрузить бинарный оператор +.
public static ThreeD operator +(ThreeD opl, ThreeD op2)
{
ThreeD result = new ThreeD();
result.x = opl.x + op2.x;
result.у = opl.y + op2.y;
result.z = opl.z + op2.z;
return result;
}
// Неявное преобразование объекта типа ThreeD к типу int. public static implicit operator int (ThreeD opl)
{
return opl.x * opl.y * opl.z;
}
// Вывести координаты X, Y, Z. public void Show()
{
Console.WriteLine(x + ', ' + у + ', ' + z) ;
}
}
class ThreeDDemo { static void Main() {
ThreeD a = new ThreeD(1, 2, 3);
ThreeD b = new ThreeD(10, 10, 10);
ThreeD с = new ThreeD(); int i;
Console.Write('Координаты точки a: ');
a.Show();
Console.WriteLine() ;
Console.Write('Координаты точки b: ');
b.Show();
Console.WriteLine();
с = a + b; // сложить координаты точек а и b Console.Write('Результат сложения a + b: ');
c.Show ();
Console.WriteLine(); i = a; // преобразовать в тип int
Console.WriteLine('Результат присваивания i = a: ' + i) ; Console.WriteLine();
i=a*2-b; // преобразовать в тип int
Console.WriteLine('Результат вычисления выражения a * 2 -
}
}
Вот к какому результату приводит выполнение этой программы.
Координаты точки а:
Координаты точки Ь: 10, 10, 10
Результат сложения а+Ь: 11, 12, 13 Результат присваивания i = а: 6
Результат вычисления выражения а * 2 - Ь: -988
Как следует из приведенного выше примера программы, когда объект типа ThreeD используется в таком целочисленном выражении, как i = а, происходит его преобразование. В этом конкретном случае преобразование приводит к возврату целого значения 6, которое является произведением координат точки а, хранящихся в объекте того же названия. Но если для вычисления выражения преобразование в тип int не требуется, то оператор преобразования не вызывается. Именно поэтому операторный метод operator int ()
Но для различных целей можно создать разные операторы преобразования. Так, для преобразования объекта типа ThreeD в тип double можно было бы определить второй оператор преобразования. При этом каждый вид преобразования выполнялся бы автоматически и независимо от другого.
