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

Перегрузка operator

Метод с именем operator и символом оператора перегружает встроенную операцию для вашего класса или структуры. Метод обязан быть public и static. Часто перегружают +, -, сравнения или неявное преобразование. Здесь покажем рабочий бинарный +.

Синтаксис

public static тип operator +(тип left, тип right) { // вычисление и return }

Пример

Давайте сложим два значения пользовательского типа через +:

using System; struct Pair { public int Left; public int Right; public static Pair operator +(Pair a, Pair b) { return new Pair { Left = a.Left + b.Left, Right = a.Right + b.Right }; } } class Program { static void Main() { var a = new Pair { Left = 1, Right = 2 }; var b = new Pair { Left = 3, Right = 4 }; var res = a + b; Console.WriteLine($"{res.Left} {res.Right}"); } }

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

4 6

Пример

Давайте перегрузим + для строкового поля:

using System; class Tag { public string Text = ""; public static Tag operator +(Tag a, Tag b) { return new Tag { Text = a.Text + b.Text }; } } class Program { static void Main() { var a = new Tag { Text = "abc" }; var b = new Tag { Text = "de" }; Console.WriteLine((a + b).Text); } }

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

"abcde"

Пример

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

using System; struct Box { public int Value; public static Box operator +(Box a, Box b) { return new Box { Value = a.Value + b.Value }; } } class Program { static void Main() { var res = new Box { Value = 2 } + new Box { Value = 3 }; Console.WriteLine(res.Value); } }

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

5

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

  • ключевое слово struct,
    для которого часто перегружают операторы
  • ключевое слово class,
    в котором тоже можно объявить operator
  • тип int,
    чьё сложение имитируют в примерах
  • индексатор this[],
    который задаёт другой специальный синтаксис
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить