在C#中如何做到将变量赋给List集合后,当变量的值改变的时候集合里的对应值也相应改变给个学习的示例代码
答案:1 悬赏:80 手机版
解决时间 2021-04-02 06:26
- 提问者网友:山高云阔
- 2021-04-01 23:06
在C#中如何做到将变量赋给List集合后,当变量的值改变的时候集合里的对应值也相应改变给个学习的示例代码
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-04-01 23:23
你描述的意思我大概可以理解。
如果你说的“变量”是个int、string这种变量的话,原则上是不可能的。
int id = 1;
List list = new List(); //一个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 list1 = new List()
{
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本身还是什么都没有。
如果你说的“变量”是个int、string这种变量的话,原则上是不可能的。
int id = 1;
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
{
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本身还是什么都没有。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯