任何人都可以告诉我哪一个更轻ref
和out
.我知道ref
和out
关键字和用法之间的确切区别.
在我来说,我可以同时使用ref
和out
,但不知道打火机一个.
如果有人需要参考,请到这里告诉我较轻的.
提前致谢..
Mat*_*ted 12
唯一的区别是编译器提示.
......出......
public static void TestOut(out int test)
{
test = 1;
}
.method public hidebysig static void TestOut([out] int32& test) cil managed
{
// Code size 4 (0x4)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldc.i4.1
IL_0002: stind.i4
IL_0003: ret
} // end of method Program::TestOut
Run Code Online (Sandbox Code Playgroud)
......参考......
public static void TestRef(ref int test)
{
test = 1;
}
.method public hidebysig static void TestRef(int32& test) cil managed
{
// Code size 4 (0x4)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldc.i4.1
IL_0002: stind.i4
IL_0003: ret
} // end of method Program::TestRef
Run Code Online (Sandbox Code Playgroud)
...... out
而ref
实际上是相同的.唯一真正的区别是out告诉编译器期望在返回方法之前设置值.您可以向具有out
标志的函数发送值,但编译器会将其视为未分配的变量.运行时并不在乎.两者都将被创建为指向变量的指针.您最好使用描述功能所需功能的关键字."可能"在下面的JITer中进行的任何优化都会对应用程序产生接近0的影响.
归档时间: |
|
查看次数: |
607 次 |
最近记录: |