можно ли перегрузить бинарный оператор таким образом что бы передать в него больше двух параметров? Т.е как то так
public static Point operator +(Vector Vx1, Vector Vy1, Vector Vx2, Vector Vy2,Point X, Point Y)
{
return new Point (X+Vx1+Vx2,Y+Vy1+Vy2,0);
}
- это как пример того что я хочу сделать. или кто может подсказать другой способ?
Автор, я не знаю, зачем тебе это нужно, но да, ты можешь сделать такое при помощи ValueTuple
.
Ниже представлен код, который используется для поддержки описанного тобой решения, он не претендует на красоту и архитектурную грамотность.
Конструктор и деконструктор вектора:
public static implicit operator (int x, int y) (Vector v)
{
return (v.X, v.Y);
}
public static implicit operator Vector((int x, int y) v)
{
return new Vector(v.x, v.y);
}
Конструктор и деконструктор поинта:
public static implicit operator (int x, int y, int z) (Point v)
{
return (v.X, v.Y, v.Z);
}
public static implicit operator Point((int x, int y, int z) v)
{
return new Point(v.x, v.y, v.z);
}
Оператор сложения поинта с кортежем:
public static Point operator +(Point point1, (Point point2, Vector Vx1, Vector Vy1, Vector Vx2, Vector Vy2) t)
{
return new Point(
(point1.X + t.Vx1.X + t.Vx2.X),
(t.point2.Y + t.Vy1.Y + t.Vy2.Y),
0);
}
Применение:
Point point = new Point(1, 2, 3);
point += ((4, 5, 6), (7, 8), (9, 10), (11, 12), (13, 14));
Смею заметить, что данное поведение АБСОЛЮТНО не очевидное, поэтому я настоятельно не рекомендую его использовать.
Как минимум, избавься от поинта Y
, тогда подобное сложение будет хоть как-то понятно. Если ты это и имел в виду, то код будет более вменяемый:
public static Point operator +(Point point1, (Vector Vx1, Vector Vy1, Vector Vx2, Vector Vy2) t)
{
return new Point(
(point1.X + t.Vx1.X + t.Vx2.X),
(point1.Y + t.Vy1.Y + t.Vy2.Y),
0);
}
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
В unity есть стандартная физика - на основе компонентов rigidbody и collider'овПри автоматическом расчете скорость объектов меняется
Добрый деньПомогите понять как реализовать такую вещь, в общем есть задача, при запуске андроид приложения у меня сначала должна запускаться...
Здравствуйте, как сделать обработку нажатия на определенный текст в консоли C#