2009-10-27 21 views
0

用這種方法聲明(無過載):C#號字面

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

是否有在運行時

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

或沒有編譯器自動轉換INT文字的之間的(性能)差異雙?

回答

2

我剛試過。 C#3.0爲您的第一個呼叫生成以下IL:

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

因此,無需運行時轉換。

7

編譯器會隱式地將int轉換爲double。

不會有任何處罰。

+0

補充:您可以隨時使用Reflector查看生成的IL或轉換回C#時的外觀。 – Joey 2009-10-27 11:37:09