C#Equals方法

下面的规则概括了 Equals 方法和等号运算符 (==) 的实现指南:

每当实现 Equals 方法时都实现 GetHashCode 方法。这可以使 Equals 和 GetHashCode 保持同步。
每当实现 == 时都重写 Equals 方法,并让它们做相同的事情。这允许使用 Equals 方法的结构代码(如 Hashtable 和 ArrayList)的行为与用 == 编写的用户代码相同。
每当实现 IComparable 接口时都重写 Equals 方法。
实现 IComparable 时,应考虑实现相等 (==)、不相等 (!=)、小于 (<) 和大于 (>) 运算符的运算符重载。
不要从 Equals 或 GetHashCode 方法或相等运算符 (==) 引发异常。
有关 Equals 方法的相关信息,请参见实现 Equals 方法。

在值类型上实现相等运算符 (==)
大多数编程语言中没有用于值类型的默认相等运算符 (==) 实现。因此,任何时候只要相等有意义就应该重载 ==。

应考虑在值类型上实现 Equals 方法,这是因为 System.ValueType 的默认实现不会同时执行自定义实现。

每当重载 Equals 方法时都实现 ==。

在引用类型上实现相等运算符 (==)
大多数语言确实为引用类型提供默认的相等运算符 (==) 实现。因此,在引用类型上实现 == 时应小心。大多数引用类型(即使是实现 Equals 方法的那些)都不应该重写 ==。

如果类型是 Point、String、BigNumber 这样的基类型,则重写 ==。每当考虑重载加法 (+) 和减法 (-) 运算符时,也应该考虑重载 ==。

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值