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

给个学习的示例代码,谢谢

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

如果你说的“变量”是个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本身还是什么都没有。

温馨提示:答案为网友推荐,仅供参考
相似回答