在C#中,使用ref
和out
关键字。
它如何影响内存管理? ref
和out
关键字的内存管理有什么区别吗?
答案 0 :(得分:7)
即使幕后使用的机制相同,但两个关键字之间的区别在于编译器必须对每个参数进行验证:
ref
关键字传递参数,则编译器会在调用之前 检查您是否已初始化了该参数out
传递参数,则编译器将在退出前检查您调用的方法是否已对相应的参数进行了赋值。此差异允许使用out var
construct, which has been added to C# 7.0。由于初始化要求,单独使用ref
可能无法使用此功能。
就内存管理而言,两者之间没有区别:在两种情况下,引用本身都是通过值传递的,而使用引用的代码会增加额外的解除引用级别。