簡體   English   中英

確定.net中值類型,引用類型和IList的對象等效項

[英]Determining object equivalence for value types, reference types and ILists in .net

我有一個帶有名為“ Value”的屬性的類,該類的類型為Object。 值可以是任何類型,結構,類,數組,IList等。

我的問題是setter和確定值是否已更改。 對於值類型,這足夠簡單,但是引用類型和列表會帶來問題。

對於類,您是否假設Equals方法已正確實現,還是僅假設每次調用setter時值都已更改? 如果我確實假定它已更改,那么也許我也應該對值類型假定它,以便行為保持一致。

對於列表,我可以檢查大小,然后檢查集合中的每個項目以查看它們是否已更改。

你們如何處理這個問題?

而不是

object Value

你可以聲明

IEquatable<T> Value

這樣,您知道Value的所有實例都將實現Equals方法。 因此,您可以檢查兩個實例的相等性。

您為什么要關心值是否已更改? 為什么不能僅假設每次調用setter時都更改了值,是有原因的嗎?

如果有很好的技術原因,則可以始終使用泛型並使Value的類型為IEquatable<T>而不是object類型。 這樣可以確保對象已實現Equals()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM