c# – 设置两个多维数组相等时的行为
发布时间:2020-12-16 01:54:31 所属栏目:百科 来源:网络整理
导读:我正在编写一个俄罗斯方块应用程序.我为我的石头使用了一个多维整数数组,它代表了它们在多维Panel字段(int [row] [colum])上的位置. 我现在处于这样的位置,当石头向下移动时,我想更新我的田地颜色.我想要更新当前的石头,而不是循环所有的字段和所有的俄罗斯
我正在编写一个俄罗斯方块应用程序.我为我的石头使用了一个多维整数数组,它代表了它们在多维Panel字段(int [row] [colum])上的位置.
我现在处于这样的位置,当石头向下移动时,我想更新我的田地颜色.我想要更新当前的石头,而不是循环所有的字段和所有的俄罗斯方块石头,所以我为最后一个位置添加了一个变量. 我现在的问题是,为什么这样做: public void moveDown() { for (int i = 0; i < location.Length; i++) { last_location[i][0] = location[i][0]; last_location[i][1] = location[i][1]; location[i][0] += 1; } } 但这不是: public void moveDown() { last_location = location; for (int i = 0; i < location.Length; i++) { location[i][0] += 1; } //last_location got also updated?? } 这里的问题是,在循环之后,last_location具有与位置变量完全相同的值,之后会发生变化! 解决方法
Array是一种引用类型.
因此,当您编写last_location = location;时,您不会创建该数组的副本. last_location使用与location相同的数组实例. 因此,当您修改两个变量中的一个时,在内存中修改相同的唯一实例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |