您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

其他 2022/1/1 18:21:03 有394人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶