从不同的类更改结构值

时间:2013-11-03 09:20:59

标签: c#-4.0 reference struct

我正在尝试从另一个类更改结构值(位于类A中)(每个类B)我写了一个方法来获取结构(该方法位于类A中)但我得到的只是一个浅复制(值没有真正改变......)任何帮助?

1 个答案:

答案 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);