日期:2014-05-18  浏览次数:20777 次

关于参数ref和out的作用。
参数ref和out有什么作用,以及它们的区别。
最好举例说明一下。

------解决方案--------------------
ref是传递参数的地址,out是返回值
使用ref前必须对变量赋值,out不用。
ref是传入值,out是传出值
 
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。例如:

class RefExample
{
static void Method(ref int i)
{
i = 44;
}
static void Main()
{
int val = 0;
Method(ref val);
// val is now 44
}
}

若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。例如:

class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value;
Method(out value);
// value is now 44
}
}
------解决方案--------------------
ref和OUT就像c++指针一样,可以地址传递,不同就是ref传入前必须赋值,OUT在函数里必须赋值,都是“引用”参数
------解决方案--------------------
你拿个鸡蛋给别人加工成蛋糕,那这个蛋糕(或这个蛋)是ref的
如果你给别人一个蛋,别人马上给你一个蛋糕,那这个蛋糕是out的


------解决方案--------------------
都是传“引用”的...不要扯什么地址,跟“值传递”更没有丝毫关系...

ref和out唯一的区别是ref参数在方法体内外始终操作的是同一个引用,而out参数只将一个对象赋给传入的引用...

所以ref参数必须先赋初值,而out参数不需要...
------解决方案--------------------
探讨

地址传递和值传递有什么区别?用在什么地方?
不用这两个参数时,是地址传递还是值传递?