在C#中,无法定义仅在 ref 和 out 方面不同的重载.据说是生成的IL相同.以下是两段IL:1.参数为ref.method private hidebysig static void  func(int32& x) cil managed
{
  // 代码大小       4 (0x4)
  .maxstack  2
  IL_0000:  ldarg.0
  IL_0001:  ldc.i4.0
  IL_0002:  stind.i4
  IL_0003:  ret
} // end of method Demo::func
2.参数为out.method private hidebysig static void  func([out] int32& x) cil managed
{
  // 代码大小       4 (0x4)
  .maxstack  2
  IL_0000:  ldarg.0
  IL_0001:  ldc.i4.0
  IL_0002:  stind.i4
  IL_0003:  ret
} // end of method Demo::func
这两段IL的唯一区别就是第二种多了[out].这个是可以省略的意思吗?对于IL不了解,请问在哪里可以找到有关的解释呢?