Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1100 of 1492 menu
◀ ▶

Арифметические операторы

В class или struct можно объявить public static перегрузки operator + и operator -. Оба операнда имеют тип вашего класса или структуры, результат тоже задаёте вы. Так моделируют, например, сумму и разность векторов или смещение координат.

Синтаксис

public static Тип operator +(Тип left, Тип right) public static Тип operator -(Тип left, Тип right)

Пример

Давайте сложим два объекта через operator +:

using System; class Pair { public int Left; public int Right; public static Pair operator +(Pair left, Pair right) { return new Pair { Left = left.Left + right.Left, Right = left.Right + right.Right }; } public static Pair operator -(Pair left, Pair right) { return new Pair { Left = left.Left - right.Left, Right = left.Right - right.Right }; } } class Program { static void Main() { var first = new Pair { Left = 1, Right = 2 }; var second = new Pair { Left = 3, Right = 4 }; var res = first + second; Console.WriteLine(res.Left); } }

Результат выполнения кода:

4

Пример

Давайте вычтем один объект из другого через operator -:

using System; class Pair { public int Left; public int Right; public static Pair operator +(Pair left, Pair right) { return new Pair { Left = left.Left + right.Left, Right = left.Right + right.Right }; } public static Pair operator -(Pair left, Pair right) { return new Pair { Left = left.Left - right.Left, Right = left.Right - right.Right }; } } class Program { static void Main() { var first = new Pair { Left = 5, Right = 4 }; var second = new Pair { Left = 1, Right = 1 }; var res = first - second; Console.WriteLine(res.Right); } }

Результат выполнения кода:

3

Пример

Давайте перегрузим арифметику в структуре:

using System; struct Offset { public int Value; public static Offset operator +(Offset left, Offset right) { return new Offset { Value = left.Value + right.Value }; } public static Offset operator -(Offset left, Offset right) { return new Offset { Value = left.Value - right.Value }; } } class Program { static void Main() { var res = new Offset { Value = 5 } + new Offset { Value = 3 }; Console.WriteLine(res.Value); } }

Результат выполнения кода:

8

Смотрите также

  • операторы == и !=,
    которые задают сравнение на равенство
  • операторы < и >,
    которые задают порядок значений
  • модификатор static,
    который обязателен для перегрузки операторов
  • ключевое слово struct,
    в котором тоже можно перегружать операторы
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить