C# list 中add 的疑问
为什么 list add 后加进去的 两条数据是不一样,
按理说 这个 tempUSer 引用类型 list 执行add操作 只是在list加了一个引用
还是讲 new user之后 ,在内存中重新开辟了一个位置??
慕雪6442864
浏览 370回答 20
20回答
-
阿晨1998
是的,第一次是开辟了一个,第二次的时候又重新开辟了一个。
-
慕尼黑的夜晚无繁华
你可能是以为tempUser=new user() 只有一行所以只执行了一次吧...
-
慕田峪9158850
这是什么意思?
-
人到中年有点甜
@何必怀念As: 如果你知道执行了2次.为什么会觉得只new出来一个user对象..
-
凤凰求蛊
@吴瑞祥: 我知道是循环两次 ,问的是list1【0】 为什么不等于list【1】
-
MM们
@何必怀念As: 循环中第一次tempUser的赋值把它指向了名字为tome的user(堆中),然后后面告诉list1,我这里有个地址(栈上),指向堆中的user,你加进去吧,然后list1[0]指向了这个user(堆中)。
第二次,tempUser的指向改为名字为lily的user,然后再告诉list1...。
-
温温酱
@何必怀念As: 看错了,你两次循环都是创建了新user对象,但理解逻辑还是一样。每次创建user对象,tempUser指向它,list[0]再指向它。
-
慕的地8271018
@何必怀念As: tempUser是变量....你以为他是常量吗...你都给他赋值2次了.凭什么他就得是同一个?
不要想太多.如果你想他是同一个.就把new user放到循环外面.那就是你想要的了
-
慕桂英3389331
他本身问的问题就有问题的
-
www说
@吴瑞祥: 我知道不是 同一个 我赋值同一个,但是 第二次的应该会覆盖第一次的啊
打开App,查看更多内容