0

このメソッド宣言では (オーバーロードなし):

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

実行時の(パフォーマンス)違いはありますか

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

または、コンパイラは int リテラルを double に自動的に変換しますか?

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 に答える