方法参数上的 ref 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,
在方法中对参数所做的任何更改都将反映在该变量中。 若要使用 ref 参数,必须将参数作为 ref
参数显式传递到方法。ref 参数的值被传递到 ref 参数。 传递到 ref 参数的参数必须最先初始化。
将此方法与 out 参数相比,后者的参数在传递到 out 参数之前不必显式初始化。 属性不是变量,
不能作为 ref 参数传递。
大家能讲一下ref关键字吗?用你自己理解的、直白的语言表述,不要像上面官方的语言。
在方法中对参数所做的任何更改都将反映在该变量中。 若要使用 ref 参数,必须将参数作为 ref
参数显式传递到方法。ref 参数的值被传递到 ref 参数。 传递到 ref 参数的参数必须最先初始化。
将此方法与 out 参数相比,后者的参数在传递到 out 参数之前不必显式初始化。 属性不是变量,
不能作为 ref 参数传递。
大家能讲一下ref关键字吗?用你自己理解的、直白的语言表述,不要像上面官方的语言。
你想给A方法中的变量(或者是其他地方的变量)N通过方法B来获取值
这时就要用到ref关键字了
例:
public void A()
{
int n = "";
B(ref n);
//下面就可以用到 n 来作别的操作了
} public void B(ref int n)
{
n = 1;//获取值过程
}
不知这样说清楚了没?
{
static void Method(ref int i)
{
i = 44;
}
static void Main()
{
int val = 0;
Method(ref val);
// val is now 44
}
}
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
http://feiyun0112.cnblogs.com/
out 方法外仅需要声明,方法中赋值,并传出,我觉得有点象方法的返回值。
当你希望能钓上非肉, 或者其他肉, 用 ref 或者 out
当只是为了送肉进去, 不关心绳子收上来时钩着什么时, 不用加修饰符, 这时绳子收上来时, 会把你当时挂的肉再挂上, 就好像你没往里放一样.(一根绳子只能挂一块肉, 肉有类型之分)ref out 的都可以在洞里挂东西, 不同的是 out 必须先初始化吧.
out 形参实例化
out 就是你传到方法里面的时候,必须要进行赋值才能返回。
简单吧?
该参数在方法中被修改时,函数外的变量不会变。
比如int a=10;
test(a);public test(int a)
{
a++;
}
执行完test(a)之后,a的值还是10,而不是11。
想让执行完后a的值为11那就用ref修饰符int a=10;
test(ref a);public test(ref int a )
{
a++;
}
引用调用参数,也就数实参是已经定义好并且有初始的变量,并是用ref修饰。
然而形参也有ref修饰,并且形参的值改变会影响实参的值~
官方的解释也很清楚
楼上几位的例子也很详尽了!
ref必须在方法体外初始化
out必须在方法体内初始化