您在
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传递)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)