为什么比较ins System.Single将float值转换为double?

时间:2018-03-15 07:05:24

标签: c#

我正在使用Resharper查看类System.Single的CompareTo方法,发现这是实现:

public int CompareTo(float value)
{
  if ((double) this < (double) value)
    return -1;
  if ((double) this > (double) value)
    return 1;
  if ((double) this == (double) value)
    return 0;
  if (!float.IsNaN(this))
    return 1;
  return !float.IsNaN(value) ? -1 : 0;
}

为什么演员阵容?

我不知道resharper是否显示反编译版本或确切的源代码,但这里是截图。

enter image description here

您也可以看到其他方法也这样做。

编辑:在打开的文档的顶部,它说它是反编译版本

// Decompiled with JetBrains decompiler
// Type: System.Single
// Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089
// MVID: 2E305EDD-3CCB-4D57-A152-462A7A1E3C46
// Assembly location: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll

编辑2:我使用ildasm.exe反编译,如JonSkeet所示,这是它显示的IL代码。似乎Resharper正在展示没有任何IL指令的演员。

enter image description here

0 个答案:

没有答案