C#记一次由于Remove会释放对象引发的bug

使用伪代码进行测试,期望test2中的值不被清空,结果输出值为0,对象被释放了

测试后发现,Remove和Clear的效果一样,都会将对象释放,输出了期望之外的结果

 

 换一种写法,这次在清空了test1的基础上,test2中的对象并没有被释放,输出值为1

 

 结论:使用Clear或者Remove时,释放了集合test1和test2所共同引用的对象,而使用new新建对象时,不会释放对象,而是使集合test1指向了一个新的对象

posted @ 2021-08-24 16:32  奇迹之耀  阅读(99)  评论(0编辑  收藏  举报