Перевантаження операторів
Тепер ви можете додавати, віднімати, множити, ділити і порівнювати не тільки цифри, ай об'єкти класів (чи структур), треба лише пояснити компілятору, як це робити
Метод буде використовуватися для всіх об'єктів класу, тому він має бути:
і публічним, і статичним
Тип що повертається, може бути і bool якщо ми порівнюємо два об'єкти
Бінарні оператори вимагають двох параметрів
Унарні оператори - одного
public static тип operator оператор(параметри)
{ }
class Point
{
public int x;
public int y;
}
public static Point operator +(Point c1, Point c2) // -, /, *
{
return new Point { x = c1.x + c2.x, y = c1.y + c2.y };
}
public static bool operator >(Point c1, Point c2) // працює лише в парі з <
{
return c1.x > c2.x;
}
public static bool operator <(Point c1, Point c2)
{
return c1.x < c2.x
}
Main
Point p1 = new Point();
p1.x = 1;
p1.y = 1;
Point p2 = new Point();
p2.x = 2;
p2.y = 2;
Point p3 = p1 + p2;
Console.WriteLine(p3.x + " " + p3.y);
Console.WriteLine(p3 < p2);
3 3
False