日期:2014-05-17  浏览次数:20366 次

ref 和 out 的区别
请问这3个有什么不同
public void text(string str){}
public void text(ref string str){}
public void text(out string str){}

------解决方案--------------------
ref 和 out 关键字都是使参数按引用传递。
ref参数使用前必须初始化,out参数则可以不初始化。
out参数在函数中必须得到赋值,ref则没有这种要求。


比如有如下代码:
C# code

public void text1(string str){}
public void text2(ref string str){}
public void text3(out string str){}

public void test()
{
     string myString;
     text1(myString);
     text2(ref myString);
     text3(out myString);
}

1、调用text1方法随便怎么都可以调用,在text1方法中改变str的值不会影响test方法中myString的值。
2、而调用text2方法,则必须要先给myString赋值才能掉用,否则无法编译通过。在text2方法中改变str的值,test方法中myString也会同时被改变。
3、调用text3则可以不给myString赋值,但是在text3方法中必须为str赋值,否则无法编译通过。同时,在text3方法中改变str的值,test方法中的myString的值也会被改变。