1
我试图从另一个类(类B每个说)更改结构值(位于类A中)我写了一个方法来获取结构(该方法位于类A中)但我得到的只是一个浅拷贝(值不会真的改变......)任何帮助?更改不同类中的结构值
我试图从另一个类(类B每个说)更改结构值(位于类A中)我写了一个方法来获取结构(该方法位于类A中)但我得到的只是一个浅拷贝(值不会真的改变......)任何帮助?更改不同类中的结构值
是的,这就是结构发生的情况。您需要在本地进行更改,然后再次复制返回。例如:
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);
最后我使用一个类instead..It解决了指针问题再加上我可能需要在里面添加一些方法,所以一个类会更合适... TNX无论如何! – crazyPixel