C# 中对象的规范形式探索
1. 哈希码与比较运算符
在 C# 编程中,我们常常需要比较对象是否相等,这就涉及到比较运算符和哈希码的使用。下面是 ComplexNumber
类中定义的比较运算符:
public static bool operator ==( ComplexNumber num1, ComplexNumber num2 ) {
return Object.Equals(num1, num2);
}
public static bool operator !=( ComplexNumber num1, ComplexNumber num2 ) {
return !Object.Equals(num1, num2);
}
这里使用了 Object.Equals
方法来判断两个 ComplexNumber
对象是否相等。需要注意的是,原书中提到的哈希码算法效率不高,因为它基于复杂的浮点数学运算,而且四舍五入可能导致许多复数落入同一个哈希桶,从而降低哈希表的效率。为了提高效率,我们可以考虑在第一次计算哈希码后进行缓存。
2. 对象排序支持
2.1 IComparable 接口
当我们需要对对象进行排序时,就需要实现 IComparable
接口。该接口定义如下:
public interface ICompar