为什么向list 添加新值会覆盖list 中的先前值

为什么向list 添加新值会覆盖list 中的先前值,第1张

为什么向list 添加新值会覆盖list 中的先前值

您在

Tag
循环内使用的是对象的相同实例,因此对的每次更新
TagName
都指向相同的引用。在循环内移动声明,以在循环的每个遍历上获取一个新鲜的对象:

foreach (string t in tagList){    Tag _tag = new Tag(); // create new instance for every iteration    _tag.tagName = t;    tags.Add(_tag);}

对于额外的部分-
当您

Tag
复制 *** 作更改
class
struct
复制 *** 作(调用时发生)时,
tags.Add(_tag)
复制整个实例(本质上是创建一个新实例),与原始
class
情况不同,在原始情况下,仅将同一个实例的引用复制到调用的参数中,然后复制到列表的元素(有关如何传递给方法调用的说明,请参见C#按值传递与按引用
struct
传递)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4976404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存