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