Изменяемые структуры являются злом и не должны использоваться! *
Вы можете изменить свой struct
на неизменяемый и метод MovePoint
, чтобы он возвращал новое значение структуры:
struct Point {
private readonly int x, y;
public Point(x, y) {
this.x = x; this.y = y;
}
public struct MoveRight() {
x++;
}
}
Тогда вы будете использовать Func<Point, Point>
для представления операции, которая меняет точку:
Func<Point, Point> move = a => a.MoveRight;
Point A = new Point() { x = 0 };
Point newA = move(A);
// newA.x is 1, but A.x is still 0, because struct is immutable
Point anotherA = move(newA);
// move the point again...
*) Конечно, есть ситуации, когда они могут быть полезны, но если бы ваша ситуация была одной из них, вы бы не задавали этот вопрос.