C# Перевантаження операторів

2075 / C# / Класи / Перевантаження операторів

 

Тепер ви можете додавати, віднімати, множити, ділити і порівнювати не тільки цифри, ай об'єкти класів (чи структур), треба лише пояснити компілятору, як це робити

Метод буде використовуватися для всіх об'єктів класу, тому він має бути:

і публічним, і статичним

Тип що повертається, може бути і 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