2014-07-05 19 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值是最直接的形式 为了验证这一点,你可以检查反汇编或类似。这包括诸如文字字符串连接之类的东西。

所以,不,请不要在此情况下担心。如果你正在做更细致的事情:或许。

相关问题