質問

このメソッド宣言を使用すると(オーバーロードなし):

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

実行時に(パフォーマンス)に違いがあります

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

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

役に立ちましたか?

解決

試しました。 C#3.0は、最初の呼び出しに対して次のILを生成します。

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

したがって、ランタイム変換はありません。

他のヒント

コンパイラは暗黙的にintをdoubleに変換します。

ペナルティはありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top