"Ref"和"Out"参数的内存分配有什么区别?

Suj*_*ngh -6 c# ref out

在C#refout关键字中.

它如何影响内存管理?内存管理refout关键字有什么区别吗?

das*_*ght 7

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

  • 如果使用ref关键字传递参数,编译器会在进行调用之前检查是否已初始化该参数
  • 如果使用out关键字传递参数,编译器会在退出之前检查您调用的方法是否已对相应的参数进行了分配.

这种差异允许out var构造,它已被添加到C#7.0.ref由于初始化要求,单独使用此功能是不可能的.

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