Перегруженный оператор — это метод со специальными именами, где за ключевым словом operator следует символ переопределяемого оператора.
class Box { public int Height { get; set; } publci int Width { get; set; } public Box(int h, int w) { Height = h; Width = w; } public static Box operator+ (Box a, Box b) { int h = a.Height + b.Height; int w = a.Width + b.Width; Box res = new Box(h, w); return res; } } static void Main(string[] args) { Box b1 = new Box(14, 3); Box b2 = new Box(5, 7); Box b3 = b1 + b2; Console.WriteLine(b3.Height); // 19 Console.WriteLine(b3.Width); // 10 }
Благодаря этому перегруженному оператору мы суммируем сразу 2 параметра. Перегруженный оператор должен быть static.
Перегружены могут быть все арифметические операторы и операторы сравнения. При перегрузке оператора >, оператор < должен быть тоже перегружен (тип будет bool: public static bool operator>).