当前位置: 首页 > 编程语言 > C#

C#对象比较分享

时间:2023-04-11 00:43:42 C#

C#对象比较有人能指出重载运算符==的思想来进行深度对象比较(而不是引用比较)。来自MSDN:默认情况下,运算符==通过确定两个引用是否引用同一对象来测试引用相等性。因此,引用类型不必实现operator==即可具有此功能。当一个类型是不可变的,即实例中包含的数据不能改变时,重载运算符==来比较值的相等性而不是引用的相等性可能有用,因为作为不可变对象,它们可以被认为是相同的,因为它们具有相同的值。在非不可变类型中覆盖operator==不是一个好主意。什么时候才能真正受益?而且,如果每个对象都有方法Equals,这使得值比较成为可能,为什么有人会使用x==y语句来执行值(而不是引用)比较?我想我不明白,因为这对我来说很奇怪。重载==运算符允许您编写x==y,这比x.Equals(y)更自然并且即使x为null也能正常工作。重载operator==只会提高代码的可读性。始终对您定义的类型使用.Equals(),尤其是深度对象比较。System.String是引用类型的典型示例,它受益于深度值相等比较而不是引用比较。一般来说,它在某些情况下使代码更容易编写,并且相等的含义通过值比较而不是引用比较更好地表达。以上就是《C#学习教程:C#对象对比分享》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: