我在City類中有這個方法。它應該創建一個基於對象的一個新的城市,該方法適用於:對「this」修飾符有問題
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的類型是「點」,它有兩個領域 - X,Y。 Point類中的Move方法有助於更改CityCenter的位置。它看起來像這樣:
public void Move(int dX, int dY)
{
this.X = x + dX;
this.Y = y + dY;
}
會發生什麼是新對象c和現有城市對象都被更改。我認爲「this」修飾符也適用於現有對象...
如何利用Move方法而不引起此行爲? 注意:這是一個封閉的API,所以我只能將私有方法添加到項目中。
淺拷貝,也許? – 2010-05-18 16:43:49
這可能有助於將代碼發佈在城市(城市c){}' – 2010-05-18 16:44:46
您可以發佈「City(City c)'構造函數的代碼嗎?我懷疑它創建了一個淺拷貝,所以'CityCenter'屬性指向相同的'Point'實例。 – dtb 2010-05-18 16:46:28