foreach循环中的C#更新对象
发布时间:2020-12-16 01:42:45 所属栏目:百科 来源:网络整理
导读:我想说这是有效的,现在却没有.我不知道会发生什么变化. var inquiry = repo.GetByInstanceId(2); foreach (var s in inquiry.Prop) { s.Prop = "Test 1 2 3..."; } Assert.AreEqual(true,inquiry.S.Single().IsDirty,"S Should Be Dirty"); 发生的事情是在Pr
我想说这是有效的,现在却没有.我不知道会发生什么变化.
var inquiry = repo.GetByInstanceId(2); foreach (var s in inquiry.Prop) { s.Prop = "Test 1 2 3..."; } Assert.AreEqual(true,inquiry.S.Single().IsDirty,"S Should Be Dirty"); 发生的事情是在Property对象得到更新之前,一切都将是盛大的.现在,属性正在foreach循环中更新,但在foreach循环之后,它就像我没有做任何事情. – 编辑 – 我正在做的基本表现是: class test { public int check { get; set; } } var x = new List<test>(); x.Add(new test(){ check = 1}); foreach (var y in x) { y.check = 5; } 问题是“这不应该起作用吗?”我认为应该,如果不是为什么?我有这个工作,我不知道我改变了什么.我可以告诉你我的对象,但我必须修改这些名字,这将是毫无意义的. IsDirty不是问题.我正在改变的值在循环内改变,但在循环外没有改变. 解决方法
在您添加的说明中,您可以在y中创建副本并修改副本.
当列表项的类型是ValueType时会发生这种情况 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |