我需要確定兩個類是否具有相同的值。比較兩個類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