首页 新闻 搜索 专区 学院

C#类似值传递和引用传递

0
悬赏园豆:20 [已解决问题] 解决于 2015-05-03 10:19

lis是一个List<sku>的集合

                    foreach (sku pri in lis)
                    {
                        foreach (var item33 in pri.value)
                        {

                            item33.price = 600;
                                  //第一次 赋值后,lis里面的所有的price都变成600了
                        }
                    }

,请问是什么原因?求解惑

问题补充:

*item
0x0294bc64
*value[0]
0x0294bc64
*value[1]
0x0294bd84
*value[2]
0x027e3ca4  这个是引用地址吗?

cf_fch的主页 cf_fch | 初学一级 | 园豆:161
提问于:2015-05-01 16:52
< >
分享
最佳答案
0

全部指向同一引用地址,查查lis,自己代码问题

收获园豆:20
Yu | 专家六级 |园豆:12950 | 2015-05-01 17:08

请问如何在vs2010查看变量的引用地址

cf_fch | 园豆:161 (初学一级) | 2015-05-01 17:24

@cf_fch: 调试-窗口-内存-内存1

地址: &变量名 + 回车 ,每次都这样查看

Yu | 园豆:12950 (专家六级) | 2015-05-02 10:19
其他回答(3)
0

打个比方,sku的对象实例本身在内存里面占了很大的空间了,并且还一个集合,是不是会占很多空间。你现在要把这个集事借给别人对它进行遍历,你觉得操作系统是直接把这个各个元素项的地址告诉别人呢,还是复制一份给别人。有钱(内存)也不能这样任性,对不对?

哑吧湖大水怪 | 园豆:13 (初学一级) | 2015-05-01 21:01
0

这里的foreach都指向的一个地址啊

请叫我头头哥 | 园豆:9382 (大侠五级) | 2015-05-01 22:05
0

foreach得到的是同一个值,循环结束之后又变成另外一个同样的值。

_Vegetables | 园豆:569 (小虾三级) | 2015-05-02 11:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册