0
用這種方法聲明(無過載):C#號字面
void Method(double d)
{
// do something with d
}
是否有在運行時
void Main()
{
Method(1);
Method(1.0);
}
或沒有編譯器自動轉換INT文字的之間的(性能)差異雙?
用這種方法聲明(無過載):C#號字面
void Method(double d)
{
// do something with d
}
是否有在運行時
void Main()
{
Method(1);
Method(1.0);
}
或沒有編譯器自動轉換INT文字的之間的(性能)差異雙?
我剛試過。 C#3.0爲您的第一個呼叫生成以下IL:
ldc.r8 1.
call instance void ConsoleApplication1.Program::Method(float64)
因此,無需運行時轉換。
編譯器會隱式地將int轉換爲double。
不會有任何處罰。
補充:您可以隨時使用Reflector查看生成的IL或轉換回C#時的外觀。 – Joey 2009-10-27 11:37:09