Рассмотрим структуру Foo следующим образом:
struct Foo
{
public float X;
public float Y;
public Foo(float x, float y)
{
this.X = x;
this.Y = y;
}
public void Change(float x)
{
this.X = x;
}
}
Я понимаю изменение поля в конструкторе, это совершенно логично для меня и моего понимания структур как значений, похожих на числа неизменяемые типы.
Однако, поскольку нельзя делать:
Foo bar = new Foo(1, 2);
bar.X = 5;
Почему можно использовать:
Foo bar = new Foo(1, 2);
bar.Change(5);
РЕДАКТИРОВАТЬ : Если структуры изменяемы, то почему нельзя ли их изменить в списке или вернуть из свойства?
Невозможно изменить выражение, потому что оно не является переменной