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,查看更多内容
随时随地看视频慕课网APP