编程语言
首页 > 编程语言> > C#关于Equals实现的不同MSDN准则

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