Мне было интересно, можно ли это сделать, не используя сеттеры.Изменение структурных полей после распаковки объекта
void Main()
{
Point p = new Point();
p.x = 7;
Object o = p;
((Point)o).y = 9; // This doesnt work !
((Point)o).Print();
}
struct Point
{
public int x, y;
public void Print()
{
System.Console.WriteLine("x= "+this.x+"\ny= "+this.y);
}
}
Возможно ли изменить значение y только путем литья и распаковки? заблаговременно
нормально, я знаю + - то, что она делает, она проходит поля в верхней части стека, а затем в куче, то о содержит ссылку на ту часть куча (все еще обучение не ненавидит xD), но я не могу сделать oy = 9; так что я могу изменить это значение после бокса? – Franmcod
@NoobCoder Нет, значения в штучной упаковке эффективно неизменяемы. Вам нужно будет добавить новое значение и заменить старые ссылки на новый. «MyBox» намного полезнее для этого сценария, потому что он избегает автоматического бокса - и литье * не создает копию (если, конечно, не существует какого-то пользовательского оператора кастинга :)). – Luaan