【发布时间】:2017-08-22 07:04:59
【问题描述】:
这是关于如何保留对象的值。 我有 1 个对象作为 "objData" 有我的主要结果。我将 objData 的结果存储在 1 个变量中。
var result = objData;
在此之后,我将从 objData 中删除一些属性,如下所示。
var result1 = objData.remove(x=>x.something..);
然后,如果我检查 "result" 那么它也会更新,因为它是引用类型对象,如果我要删除,有什么方法可以为 "result" 保留相同的值创建“result1”期间的一些属性?
【问题讨论】:
-
objData 是一个列表吗?
-
@WillyDavidJr 它是具有多个属性的对象!
-
您能否重新定义
remove方法以返回它所应用的对象的副本? -
Remove方法直接更新源,所以这里result也受到影响。要保留result,您需要编写具有不同引用位置的自定义复制方法(可能使用new运算符)。 -
@non破坏性:但是关于创建复制的工作代码(这是个问题),不管你把它放在哪里,它都是一样的。根据具体情况,任何一个选项都是有效的。如果每次调用 remove 方法都不需要副本(例如,复制一次,然后删除复制对象上的 5 个不同属性),那么将其放在 remove 方法中是不正确的。但是 OP 的问题还取决于 如何 首先进行复制,您可以从问题中看到他试图分配给不同的变量但没有考虑引用类型的工作原理。
标签: c# asp.net asp.net-mvc oop object