ref与out

刚刚在TopOfC#群中看到有人在谈论方法的返回值问题,看到说ref和out两个关键字,于是就到msdn去查询了一下。

以下是msdn中的解释:

  1. out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
  2. ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。

示例:

class OutExample
{
    static void Method(out int i)
    {
        i = 44;
    }
    static void Main()
    {
        int value;
        Method(out value);
        // value is now 44
    }
}
class RefExample
{
    static void Method(ref int i)
    {
        i = 44;
    }
    static void Main()
    {
        int val = 0;
        Method(ref val);
        // val is now 44
    }
}
按照msdn的说法,我们应该注意的是,在out中,我们不需要在调用函数之前对具体的变量做初始化,而在用ref时,我们需要对具体的变量做初始化。
原文地址:https://www.cnblogs.com/skyler/p/1710562.html