我有纯粹的机会发现,C#编译器转变此方法: static bool IsNotNull(object obj) { return obj != null; } …进入这个CIL : .method private hidebysig static bool IsNotNull(object obj) cil managed { ldarg.0 // obj ldnull cgt.un ret } …或者,如果你喜欢看反编译的C#代码: static bool IsNotNull(object obj) { return obj > null; // (note: this is not a valid C# expression) } 为什么!=被翻译成“ > ”?
我一直在尝试在业余时间学习C语言,而其他语言(C#,Java等)也有相同的概念(通常是相同的操作符)。 我想知道的是,在核心层面,什么是位移(<<,>>,>>>),它能帮助解决什么问题,什么问题在这个弯曲中潜伏着? 换句话说,一个绝对的初学者的指南,其所有的善良位移。