我需要确定两个类是否具有相同的值。比较两个类c#
A类是数据库中记录的模型。 A类的值被设置为表单中文本框的值。
如果保存被触发, 我需要知道,如果在文本框值仍相同,A类
我创造了B级,它等于A类 然后更换B级属性值文本框有什么。
然后我比较是否Class A == Class B
。
我的问题是,在更新B类属性后,A类中的相同属性更新。
你有什么建议。
我需要确定两个类是否具有相同的值。比较两个类c#
A类是数据库中记录的模型。 A类的值被设置为表单中文本框的值。
如果保存被触发, 我需要知道,如果在文本框值仍相同,A类
我创造了B级,它等于A类 然后更换B级属性值文本框有什么。
然后我比较是否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的有级副本的
例新的对象:
classA objA= new classA();
classA objB= new classA();
objB=ObjA;
现在两个实例都不同
你真的是_classes_而不是_objects_? – rightfold
你是如何创建B类的?他们真的是两个不同的班级,还是同一班级的两个不同实例? –
我声明了两个类。在表单加载时第一个类的设置值,然后在保存时触发,然后在第二个类上设置值。 – user1251683