比较两个类c#

时间:2013-09-27 06:20:01

标签: c# class compare

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

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

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

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

然后我比较Class A == Class B

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

你能提出什么建议。

2 个答案:

答案 0 :(得分:1)

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

这样,如果你var b = a ab内的值就会被复制到a == b,以便更改一个不会影响另一个。然后,您可以执行clone,默认情况下它会自动运行。 (请记住 - 如果对象实例中包含大量数据,并且多次复制,可能会降低程序速度/占用大量内存!)


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

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

答案 1 :(得分:-2)

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

示例:

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

现在两个实例都不同