賦予Dictionary的list只是指針,你每一次clear()都是對實際的list
你應該認為list給到Dictionary後,clear()不會影響導Dictionary裡的list,但實際上是會的,這樣就可以理解了吧
对,我就是这个地方理解不了,我明明已经把list添加到字典里面了,照理说这个时候list在发生改变的时候就应该和Dictionary无关了才对
@yangyong_yy:
你可以去了解一下值類型和引用類型,園子裡有很多講這個的文章
@RosonJ:
当我第一次list.Add("A")的时候list里面应该存的是指向字符串A的指针,当第二次list.Add("B")的时候list当中存的就是指向字符串B的指针,而A的指针和B的指针应该是不一样的,所以我觉得不管是值类型还是引用类型应该是一样的。
这个还有个疑问,Dictionary执行Add操作时候是否Add一个执行一个,还是所有的Add操作一起执行,如果是一起执行的话那就出这种结果就不奇怪了。
@yangyong_yy:
Dictionary的add是每次執行的,這沒有疑問
你需要釐清的是,dic1.Add(1, list);這個動作給dic1的是list的指針,而不是值
且list的值會隨著你之後的操作變化,你對這部分的理解有誤
@RosonJ:
嗯,明白了,dic1中存的是指向list的指针,而不是list里面存的指针,而指向list的指针始终都是同一个
@yangyong_yy:
是的