我在 City 类中有这个方法。它应该根据应用该方法的对象创建一个新城市:
public City newCity(string newCityName, int dX, int dY)
{
City c=new City(this); //based on a constructor : City(City c){}
c.CityName=newCityName;
c.NoOfNeighborhoods=1;
c.NumOfResidents=0;
c.CityCenter.Move(dX,dY);
return c;
}
CityCenter 的类型为“Point”,它有两个字段 - x,y。 Point 类中的 Move 方法用于更改 CityCenter 位置。它看起来像这样:
public void Move(int dX, int dY)
{
this.X = x + dX;
this.Y = y + dY;
}
发生的事情是新对象 c 和现有的 City 对象都被更改了。我认为“this”修饰符也适用于现有对象......
如何在不导致此行为的情况下利用 Move 方法? 注意:这是一个封闭的API,所以我只能在项目中添加私有(private)方法。
最佳答案
我怀疑 City c=new City(this);
正在创建当前 City 的 浅 克隆,这意味着它们共享同一个 Point 对象(只能是如果 Point 是类而不是结构,则为真)。
你能用 City c=new City();
代替吗?
关于c# - "this"修饰符有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859259/