2013-09-27 69 views
-1

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

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

如果保存被触发, 我需要知道,如果在文本框值仍相同,A类

我创造了B级,它等于A类 然后更换B级属性值文本框有什么。

然后我比较是否Class A == Class B

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

你有什么建议。

+1

你真的是_classes_而不是_objects_? – rightfold

+0

你是如何创建B类的?他们真的是两个不同的班级,还是同一班级的两个不同实例? –

+0

我声明了两个类。在表单加载时第一个类的设置值,然后在保存时触发,然后在第二个类上设置值。 – user1251683

回答

1

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

这样,如果你做var b = a,那么a里面的值就会被直接复制到b,所以更改一个不会影响另一个。然后,你可以做a == b,它会默认自动工作。 (请记住 - 如果你有一个庞大的对象实例中的数据量,并复制了很多次,也可能你的程序变慢/占用了大量的内存!)


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

如果采取此路线,您可能需要实施自定义相等比较器(请参阅IEquatable接口)。

-2

创建类B的有级副本的

例新的对象:

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

现在两个实例都不同