out关键字一般运用在什么地方比较好呢?
网上说“当希望方法返回多个值时,声明 out 方法非常有用。”,请问怎么个有用法??能举例子吗
感觉有了ref就足够了吧
别发ref和out的区别  我知道的  就是不知道在什么情况下去使用
举些例子  能凸显out的好处
100分  甩了

解决方案 »

  1.   

    sample
            static void Main()
            {
                int[] ary = { 12, 13, 103, 10003 };
                int numLargerThan10,numLargerThan100,numLargerThan1000 ;
                Proc(ary, out numLargerThan10, out numLargerThan100, out numLargerThan1000);
                Console.WriteLine("有{0}个数大于10,有{1}个数大于100,有{2}个数大于1000",numLargerThan10,numLargerThan100,numLargerThan1000);
                Console.Read();
            }        static void Proc(int[] ary, out int numLargerThan10, out int numLargerThan100, out int numLargerThan1000)
            {
                numLargerThan10 = 0;
                numLargerThan100 = 0;
                numLargerThan1000 = 0;
                foreach (var a in ary)
                {
                    if (a > 1000)
                        numLargerThan1000++;
                    else if (a > 100)
                        numLargerThan100++;
                    else if (a > 10)
                        numLargerThan10++;
                }
            }
      

  2.   

    上述代码已经说明了!
    out思路:
    1、顾名思义是输出;
    2、你在程序段中定义的变量;如:var1,var2,var3
    3、在你的过程中指定输出变量以供使用,如pout(out var1,out var2,out var3)
      

  3.   

    哦...是说用out比用ref好的地方啊...
    我觉得两个差不多,out能做的ref也能做...
      

  4.   

    bool 检测方法(out string msg)
    {
    }在这个函数中, 检测方法的返回值为成功或失败, 但失败的原因有多种, 可以把失败的原因作为 msg 传出。 
    这样,当返回值为失败的时候,你可以从msg这个参数中获得失败的原因。但是,这个失败的原因仅存在于这个检测方法内部。
    所以将其参数改为 ref ,试图从外部初始化该参数传入这个检测方法, 显然是不合适的。
      

  5.   

    class Program   
       {   
           //使用out后必须对变量赋值   
           public void TestOut(out int x, out int y)   
           {   
               x = 1;   
               y = 2;   
           }   
           //此时传进来的值分别为x1:10,y1:11,输出之后的x1的值为2   
      
           public void TestRef(ref int x, ref int y)   
           {   
               //引用剪剪那句话传进来的是猪,出来的可能是头牛(很精辟!)   
               x = 2;   
                  
           }   
           static void Main(string[] args)   
           {   
               int x;   
               int y;   
               Program P1 = new Program();   
               P1.TestOut(out x,out y);   
               Console.WriteLine("x={0},y={1}", x, y);   
               //在使用之前ref必须对变量赋值   
               int x1 = 10;   
               int Y1 = 11;   
               P1.TestRef(ref x1,ref Y1);   
               Console.WriteLine("x1={0},y1={1}", x1, Y1);   
           }   
       }  
      

  6.   

    http://blog.csdn.net/ws_hgo/archive/2009/04/11/4064487.aspx
      

  7.   

    ref和out的区别 我知道的 就是不知道在什么情况下去使用使用out传值前,不用对参数初始化
    什么时候使用? 如你所查 “当希望方法返回多个值时,声明 out 方法非常有用”eg:
            public static void Setting(out Int32 i, out Int32 j, out Int32 k)
            {
                i = 1;
                j = 2;
                k = 3;
            }
            static void Main(string[] args)
            {            Int32 i, j, k;
                Setting(out i,out j, out k);            Console.WriteLine(i);
                Console.WriteLine(j);
                Console.WriteLine(k);
            }如果使用ref , 调用Setting之前,i,j,k要赋值
      

  8.   

    也就是说是使用out以后,使得程序的逻辑性更强,但是使用out提高程序性能这一说法不成立吧
      

  9.   

    你们举的例子我都明白  但是ref都可以做到的  我没看出来代码中out会比ref有什么优点  
      

  10.   

    现在只有4楼的兄弟能看出out在程序的逻辑上有点好处  就只有这个吗??
      

  11.   

    在你需要给 输出变量赋初始值的 时候 你就用ref。
      

  12.   

    传递到 ref 参数的参数必须最先初始化,out 的参数在传递之前不需要显式初始化
    out 关键字会导致参数通过引用来传递。 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
    ref 和 out 在运行时的处理方式不同
    本质上没有区别
      

  13.   

    ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。  使用ref前必须对变量赋值,out不用。  out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。   区别可以参看下面的代码:using System;
    class TestApp
    {
     static void outTest(out int x, out int y)
     {//离开这个函数前,必须对x和y赋值,否则会报错。 
      //y = x; 
      //上面这行会报错,因为使用了out后,x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行 
      x = 1;
      y = 2;
     }
     static void refTest(ref int x, ref int y)
     { 
      x = 1;
      y = x;
     }
     public static void Main()
     {
      //out test
      int a,b;
      //out使用前,变量可以不赋值
      outTest(out a, out b);
      Console.WriteLine("a=;b=",a,b);
      int c=11,d=22;
      outTest(out c, out d);
      Console.WriteLine("c=;d=",c,d);  //ref test
      int m,n;
      //refTest(ref m, ref n); 
      //上面这行会出错,ref使用前,变量必须赋值  int o=11,p=22;
      refTest(ref o, ref p);
      Console.WriteLine("o=;p=",o,p);
     }
    }
    复制粘贴的 仅供参考
      

  14.   

    out就是函数,返回多个参数值的时候用。用法很简单,就是你想返回哪个参数,就定义它://nDirID就是返回的参数的值
    if(Int32.TryParse(Request.Params["DirID"].ToString(),out nDirID) == false)
    {
            return;
    }
      

  15.   

    使用ref前必须对变量赋值,而out则不用,out必须在该方法结束时对参数赋值...
    //这不算优点...?
      

  16.   

    我喜欢这个out , 尤其是在用于动态sql 的时候我喜欢他
      

  17.   

    一般函数只能返回一个值  用了out修饰的形式参数可以作为函数执行后的输出;
    bool Get(out Msg msg) //Msg 是一个class
    {
       try
       {
          msg=new Msg();
       }
       catch(Exception)
       {
          return false;
       }
       return true;
    }
    调用
    Msg m;
    Get(m); //m初始化了
    只是个例子  没多大意义 不过C++中常用类似的这种方法 来获取变量指针(指针生产器)
      

  18.   

    string str = "1234";
    int num = 0;Int32.TryParse(str,out num);Console.WriteLine(num);
      

  19.   

    out的函数不会清空变量 其它的赞同