我需要确定两个类是否具有相同的值。
A 类是数据库中记录的模型。A 类的值被设置为表单中文本框的值。
如果触发了保存,我需要知道文本框上的值是否仍与 A 类相同。
我创建了 B 类并将其等同于 A 类。然后将 B 类属性值替换为文本框所具有的值。
然后我比较 if Class A == Class B
。
我的问题是,在我更新 B 类的属性后,A 类的相同属性也会更新。
你有什么建议。
考虑将您的类转换为结构,以便它们按值复制,而不是按引用复制。
那样的话,如果你这样做var b = a
,里面的值就会a
被复制到,b
这样改变一个就不会影响另一个。然后,您可以这样做a == b
,默认情况下它会自动工作。(请记住——如果您的对象实例中有大量数据,并且您多次复制它,它可能会减慢您的程序/占用大量内存!)
或者,实现ICloneable接口,这需要您实现一个clone
方法。这样,您可以做var b = a.clone();
而不是var b = a;
. 该clone
方法应该实例化一个新版本的类并手动复制数据,以便两个变量引用不同的实例而不是同一个实例。
如果您采用这种方式,您可能需要实现自定义相等比较器(请参阅IEquatable接口)。
为 B 类创建一个新对象,该对象具有 A 类的副本
例子:
classA objA= new classA();
classA objB= new classA();
objB=ObjA;
现在两个实例都不同