读书人

深度复制也不行谢了

发布时间: 2012-01-07 21:41:55 作者: rapoo

深度复制也不行,在线等。谢了
class City
{
public int[] man=new int[2];
public int population = 10;
Country newCountry;

public City(Country newCountry)
{
this.newCountry = newCountry;
}


public void Step()
{
man[0] = 10;
population = 20;
}
}
class Country:ICloneable
{
public City[] Cities;

public Country(int index)
{
Cities =new City[index];
}

public object Clone()
{
Country newCountry = new Country(this.Cities.Length);
for (int i = 0; i < this.Cities.Length; i++)
{
newCountry .Cities[i]=this.Cities [i];

}
return newCountry;
}
}
class Program
{
static void Main(string[] args)
{
Country country1 = new Country(1);
country1.Cities[0] = new City(country1 );

Country tempCoutry;
tempCoutry = (Country)country1.Clone();

tempCoutry.Cities[0].Step();
}
}
// tempCountry 变, country1就变了, 搞不懂,等浅度复制时问题一致


[解决办法]

C# code
    class Country:ICloneable     {         public City[] Cities;         public Country(int index)         {             Cities =new City[index];         }         public object  Clone()         {            Country newCountry = new Country(this.Cities.Length);             for (int i = 0; i  < this.Cities.Length; i++)             {                newCountry.Cities[i] = new City(this);                newCountry.Cities[i].population = this.Cities [i].population;                newCountry.Cities[i].man[0] = this.Cities[i].man[0];                newCountry.Cities[i].man[1] = this.Cities[i].man[1];            }             return newCountry;         }     } 

读书人网 >C#

热点推荐