Перегрузка бинарных операторов в C#
Всем доброго времени суток. На связи Алексей Гулынин. В данной небольшой статье я бы хотел рассказать про перегрузку бинарных операторов в C#. Для перегрузки оператора используется ключевое слово "operator", которое определяет операторный метод. Данный метод определяет действие оператора, т.е. ту логику, которую вы в него заложите. Приведу общую форму перегрузки бинарного оператора:
public static возвращаемый_тип operator oper(тип операнд1, тип операнд2)
{
// логика
}
"oper" — это перегружаемый оператор, например + или *. "возвращаемый_тип" — обычно тип класса. Операторные методы обязательно должны быть public и static. В параметрах оператора нельзя использовать модификаторы ref и out.
Ниже приведу пример использования перегрузки бинарных операторов. Напишем класс Coords3D, который будет хранить координаты объекта в трехмерном пространстве:
class Coords3D
{
int x, y, z;
public Coords3D(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
}
public Coords3D() { }
public override string ToString()
{
return "Coords (x, y, z) = (" + this.x + ", " + this.y + ", " + this.z + ")";
}
public static Coords3D operator + (Coords3D object1, Coords3D object2)
{
Coords3D object3 = new Coords3D();
object3.x = object1.x + object2.x;
object3.y = object1.y + object2.y;
object3.z = object1.z + object2.z;
return object3;
}
}
Проверим результат работы перегрузки оператора сложения:
static void Main(string[] args)
{
Coords3D object1 = new Coords3D(5, 10, 15);
Coords3D object2 = new Coords3D(3, 2, -7);
Coords3D object3 = new Coords3D();
object3 = object1 + object2;
// Coords (x, y, z) = (8, 12, 8)
Console.WriteLine(object3.ToString());
Console.WriteLine("Нажмите клавишу для продолжения...");
Console.ReadLine();
}
В качестве домашнего задания реализуйте перегрузку следующих операторов: *, -, /.
В данной статье вы узнали про перегрузку бинарных операторов в C#.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.




