刚刚在TopOfC#群中看到有人在谈论方法的返回值问题,看到说ref和out两个关键字,于是就到msdn去查询了一下。
以下是msdn中的解释:
- out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
- 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时,我们需要对具体的变量做初始化。