加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ref和out有什么区别? (C#)

发布时间:2020-12-15 20:47:53 所属栏目:百科 来源:网络整理
导读:有任何简洁的解释吗? 还回答: Difference between ref and out parameters in .NET 解决方法 对于来电者: 对于ref参数,必须已经明确赋值变量 对于out参数,变量不必明确赋值,但在方法返回后 对于方法: ref参数从明确分配开始,您不必为其分配任何值 out参
有任何简洁的解释吗?

还回答:
Difference between ref and out parameters in .NET

解决方法

对于来电者:

>对于ref参数,必须已经明确赋值变量
>对于out参数,变量不必明确赋值,但在方法返回后

对于方法:

> ref参数从明确分配开始,您不必为其分配任何值
> out参数不会从明确分配开始,并且您必须确保无论何时返回(没有例外)它都将被明确分配

所以:

int x;
Foo(ref x); // Invalid: x isn't definitely assigned
Bar(out x); // Valid even though x isn't definitely assigned
Console.WriteLine(x); // Valid - x is now definitely assigned

...

public void Foo(ref int y)
{
    Console.WriteLine(y); // Valid
    // No need to assign value to y
}

public void Bar(out int y)
{
    Console.WriteLine(y); // Invalid: y isn't definitely assigned
    if (someCondition)
    {
        // Invalid - must assign value to y before returning
        return;
    }
    else if (someOtherCondition)
    {
        // Valid - don't need to assign value to y if we're throwing
        throw new Exception();
    }
    else
    {
        y = 10;
        // Valid - we can return once we've definitely assigned to y
        return;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读