我应该使用数据类型文字吗?

时间:2014-07-05 04:45:33

标签: c# types literals primitive-types

例如:

ulong someVariable = 1000;

“1000”会被编译器正确表示为int吗?使用......会更好吗?

ulong someVariable = 1000UL;

这会避免施法?这是我甚至应该担心的事情吗?

2 个答案:

答案 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或类似的。这包括文字字符串连接之类的内容。

所以不,在这种情况下不要担心 。如果你做的事情更加微妙:也许。

相关问题