out 和 ref 的区别
class test   
    {    
        static void gump(ref int i)    
        {
            i=12;                  //这个可以不赋值,也不会报错   
            i += 1;    
        }    
        static void Main()    
        {    
            int i = 10;    
            gump(ref i);    
            Console.WriteLine(i);    
        }    
   }
输出结果:11
使用out的例子
class test   
    {    
        static void gump(out int i)    
        {
            i=12;                 //必须对i初始化,否则会报错。  (这块就是ref和out的区别之一)   
            i += 1;    
        }    
        static void Main()    
        {    
            int i = 10;    
            gump(out i);    
            Console.WriteLine(i);    
        }    
   }
当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。
下面来举例说明一下out 的用法
示例:
 class gump   
    {    
        public void math_routines(double x, out double half, out double squared, out double cubed)    
        {    
            half = x / 2;                         //必须初始化,否则会报错    
            squared = x * x;                  //必须初始化,否则会报错    
            cubed = x * x * x;                //必须初始化,否则会报错    
        }    
    }    
    class TestApp    
    {    
        public static void Main()    
        {    
            gump g = new gump();    
            double x1 = 60;    
            double half1 = 0;    
            double squared1 = 0;    
            double cubed1 = 0;
Console.WriteLine("Before method->x1={0},half1={1},squared1={2},cubed1={3}", x1,half1 ,squared1,cubed1);
            g.math_routines(x1, out half1, out squared1, out cubed1);   
            Console.WriteLine("After method->x1={0},half1={1},squared1={2},cubed1={3}", x1, half1, squared1, cubed1);
}
}
ref用法示例:
 class gump   
    {    
        public double square(ref double x)    
        {    
            x *= x;                        //可以不初始化,不会报错    
            return x;    
        }    
    }
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号