为什么在System.Double中重写==但在System.Int32中没有重写,这有什么后果?

bar*_*lop 9 c# operator-overloading

在C#中为什么要Double覆盖==Int32没有,影响是什么?

我看一下msdn库.

我看到这个关于double的链接在这里没有说太多(虽然我理解double是Double对象的简写)..它没有显示方法的例子..

但这个链接System.Double确实提到了我在这里寻找的东西

它显示Equality运算符采用双精度,因此过载.

Image对于DoubleMSDN,然后在Methods(列出字段之前)之后,它显示运算符,并显示等于运算符被覆盖

在此输入图像描述

我可以点击"操作员"下的"平等",它说

public static bool operator ==(
    double left,
    double right
)
Run Code Online (Sandbox Code Playgroud)

而当我在MSDN中查看System.Int32 Image For Int32

在此输入图像描述

在该图像中看到,(看到的页面System.Int32)看起来==没有被覆盖.

为什么,这有什么后果?

Art*_*kel -1

使用 ILSpy 我可以看到它Double.Equals有一些额外的逻辑来检查所比较的值是否为 NaN。

ILSpy 还将正文反编译==为:

public static bool operator ==(double left, double right)
{
    return left == right;
}
Run Code Online (Sandbox Code Playgroud)

其他运营商也遵循相同的模式,这很奇怪。也许是反编译错误?