战神@冰王子 发表于 2012-12-17 21:31:37

ref与out

<div id="cnblogs_post_body"><div class="cnblogs_code" style="width: 95%; height: 1926px;"> 一、 ref    

   下面的代码主要是说了这么个事,有引用类型(数组 int[]ints)和值类型(int i),这两个有相同的初始值都是0 。通过方法对这两个进行修改,
输出之后数组值是100,整型还是0。
   继续看······

1class Program 2     { 3         static void founction(int[] ints, int i)//定义方法,通过数组传值和通过整型传值(就是一个引用传值和一个值传参) 4       { 5             ints[0] = 100;//方法里,对引用进行修改。 6             i = 100;      //对整型进行修改。 7       } 8 9      10 11      12         public static intMain()13       {14             int i = 0;15             int[] ints = { 0, 1, 2, 3, 4 };16            17             //输出原始数据         18             Console.WriteLine("数组引用原始数据:"+ints[0]);//   ints=019             Console.WriteLine("值类型原始数据:"+i);       //    int i = 020             Console.WriteLine("*******************************************");21            22            23             //调用方法进行传参         24             founction(ints, i);25            26            27             //输出传参之后的改变数据28 29             Console.WriteLine("数组引用原始数据:" + ints[0]);// ints=10030             Console.WriteLine("值类型原始数据:" + i);       //int i = 031             Console.ReadLine();32             return 0;33          34       }35   }




**   上面的代码很简单,可是我们通过上面知道了。值类型传参对其进行修改是无效的,而引用类型是可以的。我们想让值类型传参拥有引用类型传参的效果,
就是可以对其修改,对初值产生影响。那我们就加上ref关键字。就在方法传值处加上   ref。

修改如下:

static void founction(int[] ints,ref int i)//使其值类型拥有引用类型的效果
   {
         ints[0] = 100;      
         i = 100;    //这样使 在方法中,对值类型修改的值可以对初值产生影响。    i=100 啦
    }

**当然要一一对应啦,调用方法中也应该一一对应,修改为:

founction(int[] ints,ref int i)//
总结:(1)ref关键字,迫使值类型通过引用来传递。
         (2)在方法中注明ref,同事调用是也应该参数一致。

二、out
说明: 你不想让值类型有初值。不想引起混乱。
看下面代码···<div class="cnblogs_code"> class Program    {      static void founction( out int   i   )
  {               
        i = 100;
         
  }                      public static intMain()      {            int i;//加了out,就可以不对值类型进行初始化了。         
      founction(ints, out i);            Console.WriteLine("值类型数据:" + i);       //int i = 100
            Console.ReadLine();            return 0;               }

页: [1]
查看完整版本: ref与out