我在一个方法里边做了类似这样的操作
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之外没有做过任何操作。
请问这个问题如何解决?
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之外没有做过任何操作。
请问这个问题如何解决?
那你写的“然后对temp进行各种操作”这个又怎么说呢?
为了不改变A的值,把A赋给临时变量temp,对temp进行各种操作,应该不会改变A里边的值啊
int[,] temp = A;
因为数组是按引用传递的,所以是把A指向的内存地址指向了temp,也就说他们都指向同一个内存地址,当然修改temp的时候,A的值也跟着变了.
必须用new关键字实例化temp的一个实例才重新分配内存地址