【问题标题】:Memory allocation for 'Ref' and 'Out' parameter, any difference? [duplicate]'Ref' 和 'Out' 参数的内存分配,有什么区别吗? [复制]
【发布时间】:2018-12-29 15:43:03
【问题描述】:

在 C# 中,refout 关键字。

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

【问题讨论】:

    标签: c# ref out


    【解决方案1】:

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

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

    这种差异允许out var construct, which has been added to C# 7.0。由于初始化要求,单独使用 ref 无法实现此功能。

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

    【讨论】:

    • 在“ref”和“Out”关键字的情况下如何进行内存管理?有什么区别吗?
    • 就内存管理而言没有什么特别的事情发生:引用是按值传递的,代码使用额外的取消引用级别来获取或设置实际值。
    猜你喜欢
    • 1970-01-01
    • 2014-01-11
    • 2023-03-07
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 2013-01-08
    • 2010-09-13
    相关资源
    最近更新 更多