我正在尝试从另一个类更改结构值(位于类A中)(每个类B)我写了一个方法来获取结构(该方法位于类A中)但我得到的只是一个浅复制(值没有真正改变......)任何帮助?
答案 0 :(得分:3)
是的,结果就是这样。您需要在本地进行更改,然后再次浅层复制返回。例如:
public class Foo
{
public Point Location { get; set; }
}
public class Bar
{
private Foo foo = new Foo();
public void MoveFoo()
{
Point location = foo.Location;
location.X += 10;
location.Y += 20;
// Copy it back
foo.Location = location;
}
}
就我个人而言,我试图避免首先使结构变为可变 - 但通常会给它们所谓的“伪变异器”方法,这些方法通过适当的变化返回一个新的值。例如,对于Point
结构,我可能有这样的方法:
public Point TranslatedBy(int dx, int dy)
{
return new Point(x + dx, y + dy);
}
然后上面的MoveFoo
方法将是:
foo.Location = foo.Location.TranslatedBy(10, 20);