Перегрузка бинарных операторов в 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#.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.