我是C#的新手,刚从DELPHI转过来现在有一个问题下面是伪代码//申请类变量
类A[] CA=new 类A[128];
类A CB=new 类A();//实例化类数组变量
for(int i=0;i<128;i++)
 CA[i]=new 类A();CB.Num=1;//问题来了
for(int j=0;j<128;j++)
{
  CA[j]=CB;
  CA[j].Num=j;
}通过上面那个循环,CA这整个数组的Num都是一样的如果不要CA[j]=CB;就没事请问是什么原因?因为我的类的成员变量很多,需要整个类一起赋值过去

解决方案 »

  1.   

    第一个循环改为
    for(int i=0;i<128;i++)
    {
        CA[i]=new 类A();
        CA[i].Num = i;
    }
    或第二个循环改为
    for(int j=0;j<128;j++)
    {
        //CA[j]=CB;
        CA[j].Num=j;
    }
      

  2.   

    因为对象是引用类型滴解决方法:copy(),clone()使用复制手段,复制副本值传递
      

  3.   

    对象拷贝应使用Clone、Copy或CopyTo等方法clone是浅拷贝
      

  4.   

    我的类是自己写的,没有copy()和clone()方法
      

  5.   

    解决了,我把我的代码贴出来供参考在类里加上
    public class 类名: ICloneable
    {
    public object Clone()
    {
      return this.MemberwiseClone();
    }
    }调用类变量A = 类变量B.Clone() as 类名;