例如:
ulong someVariable = 1000;
“1000”会被编译器正确表示为int吗?使用......会更好吗?
ulong someVariable = 1000UL;
这会避免施法?这是我甚至应该担心的事情吗?
答案 0 :(得分:0)
在不太可能的情况下,任何编译器为这两种情况生成了不同的代码,几乎无法想象会有任何值得担心的性能差异。这是最糟糕的过早和不必要的优化。它不值得你花时间。
fyi,我已经确认,至少从vs2012开始,microsoft的编译器会在两种情况下生成完全相同的代码。
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
答案 1 :(得分:0)
在大多数情况下,编译器能够在编译期间将右侧的表达式转换为正确的形式,因此IL中的值是最直接的形式 要验证这一点,您可以检查ildasm或类似的。这包括文字字符串连接之类的内容。
所以不,在这种情况下不要担心 。如果你做的事情更加微妙:也许。