Числовые литералы C #
-
06-07-2019 - |
Вопрос
С этим объявлением метода (без перегрузок):
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.
Там не будет никакого штрафа.
Не связан с StackOverflow