经常看见ref、out、param这三个参数修饰符,在C#中偶尔使用一下,这三个参数修饰符是从C里面发展过来的,
简单说明下:
ref 和 out 主要是传递参数时使用的,比如你写了一个方法返回string类型,
- private string MyFunction()
- {
- return"abc";
- }
你也可以换成下面的形式:
- private void MyFunction(ref string str)
- {
- str="abc";
- }
或者这样:
- private void MyFunction(out string str)
- {
- str="abc";
- }
那怎么调用这个函数呢。。
- // 针对于ref参数修饰符
- string returnValue=string.Empty;
- MyFunction(ref returnValue);
- // 针对于out参数修饰符
- string returnValue;
- MyFunction(out returnValue);
从两者的调用上就可以看出区别,在带有ref参数修饰符的参数时,必须给ref参数初始化值,
string returnValue=string.Empty;
代码中给参数初始化为空。
这是因为带有ref参数修饰符的参数是传递的地址,
而out参数修饰符是返回的值。