Перегрузка бинарных операторов в C#

Перегрузка бинарных операторов в C#

Всем доброго времени суток. На связи Алексей Гулынин. В данной небольшой статье я бы хотел рассказать про перегрузку бинарных операторов в C#. Для перегрузки оператора используется ключевое слово "operator", которое определяет операторный метод. Данный метод определяет действие оператора, т.е. ту логику, которую вы в него заложите. Приведу общую форму перегрузки бинарного оператора:

public static возвращаемый_тип operator oper(тип операнд1, тип операнд2)
{
  // логика
}

"oper&quot — это перегружаемый оператор, например + или *. "возвращаемый_тип" — обычно тип класса. Операторные методы обязательно должны быть 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#.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *