C# 变量赋值与改变问题

图片说明
图片说明
如上面的图片所示
将一个全局变量players[n]赋值给局部变量player
然后对局部变量play进行设置 赋值
然后发现全局变量players[n]也跟着改变了
这是为什么?

3个回答

这还用说吗,最基本的,你没有搞清楚引用类型的赋值,先上图
图片说明
图片说明

引用类型变量的赋值: 引用类型变量中保存的是“指向实际数据的引用指针”。在进行赋值操作的时候,它和值类型一样,也是先有一个复制的操作,不过它复制的不是实际的数据,而是引用(真实数据的内存地址)。

所以引用类型的变量在赋值的时候,赋给另一变量的实际上是内存地址。这样赋值完成后,2个引用变量中保存的是同一引用,他们的指向完全一样。

         public BOOLEAN SecondLevel(int noPlayer, bool bID)
        {
            Player player = players[noPlayer];

            if (bID)
            {
                Random rand = new Random();

                if (CheckID(player).Count == 0)
                    return BOOLEAN.FALSE;

                switch (CheckID(player).Count)
                {
                    case 1:
                        player.IDSet(CheckID(player)[0]); break;
                    default:
                        {
                            int team = rand.Next(noPlayer);
                            player.IDSet(GasesAndChooseType(players[team], CheckID(player)));
                        } break;
                }

                player.Hand.Remove(player.Identity_Card.Key);

                return BOOLEAN.FULL;
            }
            else
            {
                return LifeSkillSetAI(player);
            }
        }

你传递操作是一个类对象 吧?这涉及到值传递和引用传递的问题;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!