C#关于Equals实现的不同MSDN准则
作者:互联网
为什么以下文档在实现Equals方法时谈论不同的方法?
> [MSDN]
Guidelines for Overriding Equals() and Operator == (C# Programming Guide)
> [MSDN]
Implementing the Equals Method
第二个文档(较新)未明确实现Equals的强类型版本(如公共布尔Equals(MySuperTrooperClass o)).
从准则之一中删除强类型方法的根本原因是什么?我应该在生产代码中使用哪种方法?
解决方法:
删除强类型版本没有任何好处.恰恰相反,正如第一页本身提到的那样
It is also recommended that in addition to implementing Equals
(object), any class also implement Equals (type) for their own type,
to enhance performance.
对于值类型,这是双重事实.
我认为第二页根本不涉及这一点,因为在System.Object上仅定义了弱类型的版本.强类型版本通常与实现IEquatable T并驾齐驱,IEquatable T的documentation提到了Equals(T)和Equals(object)之间的交互.
标签:msdn,equals,equality,c 来源: https://codeday.me/bug/20191101/1982722.html