我偶然发现C#编译器将这个方法转换为:static bool IsNotNull(object obj) { return obj != null; } …转换为这个CIL:.method private hidebysig static bool IsNotNull(object o...
这段C#代码: private void LoadAssignments(AssignmentType assignmentType, Collection<Assignment> assignments) { bool flag; Dat...
我正在尝试理解IL中的while循环是怎样的。我已经编写了以下C#函数: static void Brackets() { while (memory[pointer] > 0) { // Snipped body...
我正在使用MSIL反编译器-ILDASM进行一些实验,并尝试反编译一个简单的.NET方法。 操作码看起来大致如下:.method private hidebysig static int32 Add(int32 a, ...
几天前,在stackoverflow上为这个问题写答案时,我对C#编译器感到有点惊讶,因为它没有按照我预期的那样工作。请看以下两段代码: 第一段:object[] array = new object[1]; for (int i = 0; i < 100000; i++) { ...
我正在查看MSIL并注意到有很多nop指令。 MSDN文章说它们不执行任何操作,并且如果需要修补,它们用于填充空间。在调试版本中使用得比发布版要多。 我知道这些语句在汇编语言中用于对齐后面的指令,但为什么MSIL需要使用nop指令呢? (编辑说明:被接受的答案是关于机器码NOP而不是最初...
假设我有以下代码: 假设我有以下代码: public class Class1 { private Class2 obj; public void MethodA() { var class2 = new Class2(); clas...