1个回答
展开全部
你描述的意思我大概可以理解。
如果你说的“变量”是个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本身还是什么都没有。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询