微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

有任何简洁的解释吗?

还回答:
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;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐