【问题标题】:What is diffrence between Out type Vs Ref type parameter in C#? [duplicate]C# 中的 Out 类型与 Ref 类型参数有什么区别? [复制]
【发布时间】:2012-02-16 13:03:45
【问题描述】:

可能重复:
Difference between ref and out parameters in .NET

C#.net 中 Out 类型和 Ref 类型参数有什么区别?


什么时候可以在什么情况下使用?

【问题讨论】:

    标签: c#


    【解决方案1】:

    两者都向调用者表明该方法可以修改参数的值。 out 参数必须在方法内部初始化,而 ref 参数可能在外部初始化。这基本上是一份合同。当你看到一个带有 out 参数的方法时,这意味着调用者可以在不初始化值的情况下调用它,并确保它会在内部被初始化:

    Foo foo;
    SomeMethod(out foo);
    // at this stage we know that foo will be initialized
    

    而参考:

    Foo foo;
    SomeMethod(ref foo); // compile time error
    

    在调用方法之前初始化变量是调用者的责任:

    Foo foo = new Foo();
    SomeMethod(ref foo); // ok
    

    【讨论】:

      【解决方案2】:

      引用here

      out 关键字导致参数通过引用传递。这是 类似于 ref 关键字,除了 ref 要求变量 在通过之前被初始化。

      有些方法,比如Int32.TryParse() 使用一个输出参数,所以需要将一个未初始化的变量传递给它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-25
        • 2018-12-29
        • 1970-01-01
        • 2018-12-03
        • 1970-01-01
        • 2012-02-12
        • 2011-09-25
        • 1970-01-01
        相关资源
        最近更新 更多