2013-11-03 112 views
1

我试图从另一个类(类B每个说)更改结构值(位于类A中)我写了一个方法来获取结构(该方法位于类A中)但我得到的只是一个浅拷贝(值不会真的改变......)任何帮助?更改不同类中的结构值

回答

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); 
+0

最后我使用一个类instead..It解决了指针问题再加上我可能需要在里面添加一些方法,所以一个类会更合适... TNX无论如何! – crazyPixel