繁体   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