2014-07-05 18 views
1

例如:我應該使用數據類型文字嗎?

ulong someVariable = 1000; 

的 「1000」 將被表示爲被編譯器正確一個INT?這會是一個更好的主意...

ulong someVariable = 1000UL; 

因爲這樣可以避免鑄造?這是我應該擔心的嗎?

回答

0

不,這不是你應該擔心,直到永遠。

在任何編譯器產生不同的代碼,這兩種情況的可能性不大的情況下

,它是非常難以想象會有任何性能差異值得擔心。這是最糟糕的過早和不必要的優化。這不值得你花時間。

僅供參考,我已經證實,至少在vs2012微軟的編譯器生成在這兩種情況下完全相同的代碼。

IL_0000: ldarg.0 
IL_0001: ldc.i4  0x3e8 
IL_0006: conv.i8 
IL_0007: stfld  uint64 ClassLibrary1.Class1::suffixed 
IL_000c: ldarg.0 
IL_000d: ldc.i4  0x3e8 
IL_0012: conv.i8 
IL_0013: stfld  uint64 ClassLibrary1.Class1::unsuffixed 
+2

感謝您的評論,是有什麼原因?編譯器是否推斷1000作爲ulong類型呢?或者是這些類型的演員不值得擔心? – Xanather

+0

更編譯器的程序員是waaay比我們卑微的高水平開發更智能的情況下... – Dabblernl

0

在大多數情況下,編譯器將能夠將表達式轉換到編譯過程中正確形式的權利,所以在IL值是最直接的形式 爲了驗證這一點,你可以檢查反彙編或類似。這包括諸如文字字符串連接之類的東西。

所以,不,請不要在此情況下擔心。如果你正在做更細緻的事情:或許。

相關問題