加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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相同的数组实例.

因此,当您修改两个变量中的一个时,在内存中修改相同的唯一实例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读