关于C#:”ref”和”out”参数的内存分配,有什么区别吗?

Memory allocation for 'Ref' and 'Out' parameter, any difference?

本问题已经有最佳答案,请猛点这里访问。

在C #,outref和关键字。

它影响记忆如何管理?有没有任何差分内存管理中的研究与outref关键字?


尽管场景后面使用的机制相同,但两个关键字之间的区别在于编译器必须验证每个参数的内容:

  • 如果传递一个带有ref关键字的参数,编译器会在调用之前检查是否已初始化该参数。
  • 如果传递带有out关键字的参数,则编译器会在退出之前检查您调用的方法是否已对相应参数进行了赋值。

这种差异允许out var构造,该构造已添加到C 7.0中。由于初始化要求,仅使用ref不可能实现此功能。

就内存管理而言,这两者没有区别:在这两种情况下,引用本身是通过值传递的,而使用引用的代码则添加了额外的取消引用级别。