0

使用此方法声明(无重载):

void Method(double d)
{
  // do something with d
}

运行时之间是否存在(性能)差异

void Main()
{
    Method(1);
    Method(1.0);
}

还是编译器会自动将 int 文字转换为双精度值?

4

2 回答 2

7

编译器会将 int 隐式转换为 double。

不会有任何处罚。

于 2009-10-27T11:35:27.367 回答
2

我刚试过。C# 3.0 为您的第一次调用生成以下 IL:

ldc.r8 1.
call instance void ConsoleApplication1.Program::Method(float64)

因此,没有运行时转换。

于 2009-10-27T11:37:31.530 回答