急求一个C#问题,请大家指点以下,面试用到的!!
简述下面函数的区别:
private void test(string str){...}
private void test(ref string str){...}
private void test(out string str){...}
[解决办法]
private void test(string str){...}
传入string类型参数,无返回值
private void test(ref string str){...}
传入ref string类型参数需要先初始化str
private void test(out string str){...}
传入out string类型参数不用事先初始化str
好像是这样
[解决办法]
1. private void test(string str){...} 定义一个私有属性的 没有返回值得 带一个string参数的方法
2. private void test(ref string str){...}跟第一个不一样的地方是ref是调用参数的引用而不是值调用。 str在改方法内进行的任何改变都将保存 例如:
string a= "100 ";
test(a);
Console.WriteLine(a); //显示100
test(ref a);
Console.WriteLine(a); //显示100200
private void test(string str){ str+= "200 "; }
private void test(ref string str){ str+= "200 "; }
3. private void test(out string str){...} 表示参数传入前可以不给定义。
例如: string a;
test(out a);
test(out a){...}
假如没有out参数 则编译出错,提示a没有定义初始值。
[解决办法]
Iceguy(Snow)正解
out跟ref的区别就是out不用初始化
[解决办法]
out另外一个作用是可以在一个函数中返回多个参数。
such as : out string A,out string B 同时作为函数test(out string A ,out string B)的参数,在函数内赋值。
则一旦执行了test函数,A B的就都有值。
[解决办法]
ref 的参数为引用参数,变量被传进去修改后能把修改后的值保存下来,但改变量必须在传入之前赋值。
out 跟ref的区别就是变量传入之前不需要赋值
[解决办法]
第一个是值传递 在传递的过程中不会改变原来的值
最后两个是地址传递 会改变原来的值
引用:zhzhuo(编程混饭)
传入ref string类型参数需要先初始化str
传入out string类型参数不用事先初始化str