将MSIL或JIT编译器替换为1<<< 5或1<<分别在32和2147483648的代码中31或者它们是否会等待方法执行以“及时”评估这些常量,因为它们涉及其他方法(运算符)? 非常感谢你.
以下代码
static void Main ( string[] args ) { Console.WriteLine ( 1 << 4 ); }
获取编译为
IL_0000: nop IL_0001: ldc.i4.s 16 IL_0003: call void [mscorlib]System.Console::WriteLine(int32) IL_0008: nop IL_0009: ret
它只加载常量16并将其传递给WriteLine.