请问这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的值也会被改变。