2013-09-27 70 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; 

現在兩個實例都不同