我问这个问题的原因是因为在阅读了关于在页面末尾重载此运算符的msdn建议后,它提到了:
operator ==的重载中的常见错误是使用(a == b),(a == null)或(b == null)来检查引用相等性。这反而导致调用重载的运算符==,导致无限循环。使用ReferenceEquals或将类型转换为Object,以避免循环。
所以我想知道是否应该为标准方案实现重载。
答案 0 :(得分:10)
没有!除非你知道自己在做什么,否则不要搞乱参考平等。如果需要,可以实现IComparable Equals方法。
编辑:为了更好的图片,请查看有效的C#,项目#9。
编辑:你可以从这里开始: