ulong someVariable = 1000;
的 「1000」 將被表示爲被編譯器正確一個INT?這會是一個更好的主意...
ulong someVariable = 1000UL;
因爲這樣可以避免鑄造?這是我應該擔心的嗎?
ulong someVariable = 1000;
的 「1000」 將被表示爲被編譯器正確一個INT?這會是一個更好的主意...
ulong someVariable = 1000UL;
因爲這樣可以避免鑄造?這是我應該擔心的嗎?
不,這不是你應該擔心,直到永遠。
在任何編譯器產生不同的代碼,這兩種情況的可能性不大的情況下,它是非常難以想象會有任何性能差異值得擔心。這是最糟糕的過早和不必要的優化。這不值得你花時間。
僅供參考,我已經證實,至少在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
在大多數情況下,編譯器將能夠將表達式轉換到編譯過程中正確形式的權利,所以在IL值是最直接的形式 爲了驗證這一點,你可以檢查反彙編或類似。這包括諸如文字字符串連接之類的東西。
所以,不,請不要在此情況下擔心。如果你正在做更細緻的事情:或許。
感謝您的評論,是有什麼原因?編譯器是否推斷1000作爲ulong類型呢?或者是這些類型的演員不值得擔心? – Xanather
更編譯器的程序員是waaay比我們卑微的高水平開發更智能的情況下... – Dabblernl