ref 关键字通过引用(而非值)传递参数。 通过引用传递的效果是,对所调用方法中的参数进行的任何更改都反映在调用方法中。 例如,如果调用方传递本地变量表达式或数组元素访问表达式,所调用方法会将对象替换为 ref 参数引用的对象,然后调用方的本地变量或数组元素将开始引用新对象。

说明 说明

不要混淆通过引用传递的概念与引用类型的概念。 这两种概念是不同的。 无论方法参数是值类型还是引用类型,均可由 ref 修改。 当通过引用传递时,不会对值类型装箱。

若要使用 ref 参数,方法定义和调用方法均必须显式使用 ref 关键字,如下面的示例所示。

C#

    class RefExample
    {        static void Method(ref int i)
        {            // Rest the mouse pointer over i to verify that it is an int.
            // The following statement would cause a compiler error if i
            // were boxed as an object.
            i = i + 44;
        }        static void Main()
        {            int val = 1;
            Method(ref val);
            Console.WriteLine(val);            // Output: 45
        }
    }

传递到 ref 形参的实参必须先经过初始化,然后才能传递。

参考:https://msdn.microsoft.com/zh-cn/library/14akc2c7(v=vs.120).aspx

最后修改:2015 年 02 月 06 日
如果觉得我的文章对你有用,请随意赞赏