89得票7回答
"k += c += k += c;" 中的内联运算符有解释吗?

以下操作的结果有何解释?k += c += k += c; 我试图理解以下代码的输出结果:int k = 10; int c = 30; k += c += k += c; //k=80 instead of 110 //c=70 目前我正在努力理解为什么“k”的结果是80。为什么把k赋值为4...

85得票8回答
MSIL和Java字节码之间的区别是什么?

我是 .Net 的新手,希望先了解一些基础知识。 MSIL 和 Java 字节码有何区别?

82得票18回答
CIL nop操作码的目的是什么?

我正在查看MSIL并注意到有很多nop指令。 MSDN文章说它们不执行任何操作,并且如果需要修补,它们用于填充空间。在调试版本中使用得比发布版要多。 我知道这些语句在汇编语言中用于对齐后面的指令,但为什么MSIL需要使用nop指令呢? (编辑说明:被接受的答案是关于机器码NOP而不是最初...

65得票6回答
调用和Callvirt

CIL指令中的“Call”和“Callvirt”有什么区别?

62得票1回答
动态PInvoke的性能分析

我正在开发MSIL分析器,并且在使用ICorProfilerCallback接口的ManagedToUnmanagedTransition和UnmanagedToManagedTransition回调时遇到了问题。 我想要获取被调用方法的信息(名称和所在模块的名称)。 目前为止,一切都运行...

54得票2回答
为什么在C#中使用自动属性时需要调用:this() 在结构体中?

如果我在C#中使用自动属性定义一个结构体,就像这样:public struct Address { public Address(string line1, string line2, string city, string state, string zip) { ...

43得票3回答
生成尾调用指令

出于好奇我试图使用C#生成一个尾调用操作码。 斐波那契数列是一个简单的例子,因此我的C#示例看起来像这样: private static void Main(string[] args) { Console.WriteLine(Fib(int.MaxValue, ...

38得票1回答
sizeof(T)和Unsafe.SizeOf<T>()有什么区别?

首先,在实际问题之前,有一个小免责声明: 我知道有很多关于 `sizeof` 操作符和 `Marshal.SizeOf` 方法之间的区别的封闭/重复问题,而且我确实理解两者之间的区别。这里我谈论的是新的 `Unsafe` 类中的 `SizeOf` 方法。 因此,我不确定我理解这两个操作之间...

37得票4回答
方法 MethodImplOptions.InternalCall 的作用是什么?

许多BCL中的方法都带有[MethodImpl(MethodImplOptions.InternalCall)]属性。这表示“该方法是在公共语言运行时内部实现的”。 为什么要以这种方式设计框架,而不是指定明确的CIL指令,强制运行时实现呢?最终,该属性为运行时创建了合同义务,但以一种对我来说...

31得票3回答
C#编译器不会优化不必要的类型转换。

几天前,在stackoverflow上为这个问题写答案时,我对C#编译器感到有点惊讶,因为它没有按照我预期的那样工作。请看以下两段代码: 第一段:object[] array = new object[1]; for (int i = 0; i &lt; 100000; i++) { ...