我在一个方法里边做了类似这样的操作
   public int XX(int X,int X,int[,] A,int X)
  {
     int[,] temp = A;
     然后对temp进行各种操作
     
  }  但是问题出现了,当方法结束,返回的之后,A中的值,比如A[7,7],传进来时 A[7,7] = 1,当执行完此方法后变成了 0.
  我确定除了 把 A 赋给 temp之外没有做过任何操作。
  请问这个问题如何解决?

解决方案 »

  1.   


    那你写的“然后对temp进行各种操作”这个又怎么说呢?
      

  2.   


    为了不改变A的值,把A赋给临时变量temp,对temp进行各种操作,应该不会改变A里边的值啊
      

  3.   

    这个语句
    int[,] temp = A;
    因为数组是按引用传递的,所以是把A指向的内存地址指向了temp,也就说他们都指向同一个内存地址,当然修改temp的时候,A的值也跟着变了.
    必须用new关键字实例化temp的一个实例才重新分配内存地址