简述下面函数的区别:
private void test(string str){...}
private void test(ref string str){...}
private void test(out string str){...}

解决方案 »

  1.   

    private void test(string str){...}
        传入string类型参数,无返回值
    private void test(ref string str){...}
        传入ref string类型参数需要先初始化str
    private void test(out string str){...}
        传入out string类型参数不用事先初始化str好像是这样
      

  2.   

    1.   private void test(string str){...} 定义一个私有属性的 没有返回值得 带一个string参数的方法
    2.   private void test(ref string str){...}跟第一个不一样的地方是ref是调用参数的引用而不是值调用。 str在改方法内进行的任何改变都将保存 例如:
    string a="100";
    test(a);
    Console.WriteLine(a);  //显示100test(ref a);
    Console.WriteLine(a);  //显示100200private 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没有定义初始值。
      

  3.   

    Iceguy(Snow)正解
    out跟ref的区别就是out不用初始化
      

  4.   

    out另外一个作用是可以在一个函数中返回多个参数。such as : out string A,out string B 同时作为函数test(out string A ,out string B)的参数,在函数内赋值。则一旦执行了test函数,A B的就都有值。
      

  5.   

    ref 的参数为引用参数,变量被传进去修改后能把修改后的值保存下来,但改变量必须在传入之前赋值。
    out 跟ref的区别就是变量传入之前不需要赋值
      

  6.   

    第一个是值传递 在传递的过程中不会改变原来的值最后两个是地址传递 会改变原来的值 引用:zhzhuo(编程混饭)
    传入ref string类型参数需要先初始化str
    传入out string类型参数不用事先初始化str