c#中ref和out参数之间哪个更亮

Dot*_*Net 1 c# wpf

任何人都可以告诉我哪一个更轻refout.我知道refout关键字和用法之间的确切区别.

在我来说,我可以同时使用refout,但不知道打火机一个.

如果有人需要参考,请到这里告诉我较轻的.

提前致谢..

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)

...... outref 实际上是相同的.唯一真正的区别是out告诉编译器期望在返回方法之前设置值.您可以向具有out标志的函数发送值,但编译器会将其视为未分配的变量.运行时并不在乎.两者都将被创建为指向变量的指针.您最好使用描述功能所需功能的关键字."可能"在下面的JITer中进行的任何优化都会对应用程序产生接近0的影响.