![]() |
1
19
将局部变量作为引用传递
在低级别,引用的本地
这将是JIT et(目标架构是x86):
将数组项或对象成员作为引用传递这里发生了几乎相同的事情,获取字段或元素的地址,并将指针传递给函数:
编译为(无钻孔部分):
请注意,在这种情况下,数组不必固定
,因为
framework知道中的地址
通过打开“反汇编”窗口,您可以使用Visual Studio调试器自己研究JIT编译的程序集( 调试/Windows/反汇编 ) |
![]() |
2
5
局部变量或字段的地址。在IL中,
这个
地址为32/64位,具体取决于目标体系结构。 |
![]() |
3
4
下面是C#代码中的一个简单示例:
这是生成的IL代码
注意,在这个简单的案例中,ldloca实际上只有一个区别。s 00或ldloc.0。加载本地地址或加载地址(偏移量为00) 这是最简单级别的区别(这是您在注释中要求的)——如果您加载变量的值或加载变量的地址。事情可能会很快变得复杂——如果你调用的函数不是本地的,如果你传递的变量不是本地的等等。但在基本层面上,这是不同的。 我使用linqpad进行了快速diss组装——我推荐它。 http://www.linqpad.net/ |
![]() |
4
0
它将通过引用传递局部变量,而不是为其发送新副本 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |