-1

我需要确定两个类是否具有相同的值。

A 类是数据库中记录的模型。A 类的值被设置为表单中文本框的值。

如果触发了保存,我需要知道文本框上的值是否仍与 A 类相同。

我创建了 B 类并将其等同于 A 类。然后将 B 类属性值替换为文本框所具有的值。

然后我比较 if Class A == Class B

我的问题是,在我更新 B 类的属性后,A 类的相同属性也会更新。

你有什么建议。

4

2 回答 2

1

考虑将您的类转换为结构,以便它们按值复制,而不是按引用复制。

那样的话,如果你这样做var b = a,里面的值就会a被复制到,b这样改变一个就不会影响另一个。然后,您可以这样做a == b,默认情况下它会自动工作。(请记住——如果您的对象实例中有大量数据,并且您多次复制它,它可能会减慢您的程序/占用大量内存!)


或者,实现ICloneable接口,这需要您实现一个clone方法。这样,您可以做var b = a.clone();而不是var b = a;. 该clone方法应该实例化一个新版本的类并手动复制数据,以便两个变量引用不同的实例而不是同一个实例。

如果您采用这种方式,您可能需要实现自定义相等比较器(请参阅IEquatable接口)。

于 2013-09-27T06:24:30.583 回答
-2

为 B 类创建一个新对象,该对象具有 A 类的副本

例子:

classA objA= new classA();    
classA objB= new classA();    
objB=ObjA;

现在两个实例都不同

于 2013-09-27T06:33:18.223 回答