在C#中如何做到将变量赋给List集合后,当变量的值改变的时候集合里的对应值也相应改变给个学习的示例代码

给个学习的示例代码,谢谢... 给个学习的示例代码,谢谢 展开
 我来答
376710727
2016-09-09 · TA获得超过8937个赞
知道大有可为答主
回答量:2593
采纳率:100%
帮助的人:1266万
展开全部

你描述的意思我大概可以理解。

如果你说的“变量”是个int、string这种变量的话,原则上是不可能的。

int id = 1;
List<MyEntity> list = new List<MyEntity>(); //一个list
list[0].ID = id;//把int的值赋给list第一个元素的ID属性
id+=1;
//output list[0].ID; ? 是否等于2


C#中 int string 这些基类型是值类型,也就是说,第三行代码运行的时候,把id的值 赋给了list[0].ID, 这行代码执行完, id和ID就再也没有关系了 ,值类型继承自System.ValueType。。


如果你的“变量”指的是一个“类型”:

List<MyEntity> list1 = new List<MyEntity>()

    new MyEntity()
    {
        ID =1,
    }
}; //声明一个 list1 实例化了一个元素,元素的ID =1

var list2 = list1;
list1[0].ID +=1;
//output list2[0].ID?

那么类型之间的“=”是引用类型的操作,引用类型继承自System.Object, 引用类型在赋值时, 不复制对象本身,只复制对象的引用。 

所以在这种情况下,list1[0].ID 变成2的时候,list2[0].ID也是2.



说的更形象一点的话(不一定对):

值类型的赋值,b=a,相当于把a的结果复制给了b。从此a和b没有任何关系。

引用类型的赋值b=a ,实际上只是建立了引用,当你用到b的时候,是去内存中调用a的值,b本身还是什么都没有。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式