Перегруженный оператор — это метод со специальными именами, где за ключевым словом 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>).