首先确定一下数组赋值是地址赋值吗?

weikeli19 2016-04-23 03:08:20
1)首先确定一下数组对数组的赋值是地址赋值吗?
2)我划下来的1号句子我认为他这句句子写的有问题 个认为还是会洗牌的 大神们你们觉得呢?这句句子出自于昨天洗牌的游戏
如图
...全文
514 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
依韵宵音 2016-04-24
  • 打赏
  • 举报
回复
1、 数组是引用类型没错,这是我能确定的。 2、引用类型的直接=复制的话 是指向了同一个地址,相当于还是一个。 以上是学习C#的知识,楼上很多说.NET不一样,我不清楚 。 我自己测试的结果是下面这样的 代码:意思就是定义一个数组,然后另一个直接=它,输出看结果, 再讲其中一个改变值,重新输出 然后比较

            int[] a = new int[3] { 0, 1, 2 };
            int[] b = a;
            Response.Write("a:  ");
            foreach (int i in a)
            {
                Response.Write(i+"  ");
            }
            Response.Write("b:  ");
            foreach (int i in a)
            {
                Response.Write(i+"  ");
            }
            //重新赋值
            for (int i = 0; i < a.Length; i++)
            {
                a[i] = 0;
            }
            Response.Write("<br/>a:  ");
            foreach (int i in a)
            {
                Response.Write(i + "  ");
            }
            Response.Write( "b:   ");
            foreach (int i in a)
            {
                Response.Write(i+"  ");
            }
结果是这样的: a: 0 1 2 b: 0 1 2 a: 0 0 0 b: 0 0 0 所以我觉得是不能洗牌的,因为两个一样,CopyTo方法是复制一份,意义和直接=是不一样的
weikeli19 2016-04-23
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
他说的没错! 您看清楚了,他是说 newDeck.CopyTo(cards, 0) 这样会洗牌 cards = newDeck 并且其他地方还有 cards 的引用 就不会洗牌
你编译个代码来证明cards = newDeck 并且其他地方还有 cards 的引用 就不会洗牌
weikeli19 2016-04-23
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
他说的没错! 您看清楚了,他是说 newDeck.CopyTo(cards, 0) 这样会洗牌 cards = newDeck 并且其他地方还有 cards 的引用 就不会洗牌
编一个简单点的代码就行 做个示例
xuzuning 2016-04-23
  • 打赏
  • 举报
回复
他说的没错! 您看清楚了,他是说 newDeck.CopyTo(cards, 0) 这样会洗牌 cards = newDeck 并且其他地方还有 cards 的引用 就不会洗牌
weikeli19 2016-04-23
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
.Net 没有地址的概念 所以不要用其他语言的概念去解释 .Net 的行为
那么第2个问题我说的对吗? 个人认为还是会洗牌的
xuzuning 2016-04-23
  • 打赏
  • 举报
回复
.Net 没有地址的概念 所以不要用其他语言的概念去解释 .Net 的行为
  • 打赏
  • 举报
回复
你会看到,凡是正规的描述,都把引用作为一个名叫“引用”的系统结构而介绍,而通常不是用c 教程才会去用的“地址”这个词儿。
  • 打赏
  • 举报
回复
就算是有个“地址”概念,也是浮动的,而不是什么存储器地址概念。更何况,.net的引用是一个复杂的数据结构,并不是什么地址。
weikeli19 2016-04-23
  • 打赏
  • 举报
回复
个人认为还是会洗牌的

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧