1.Out参数

  作用:使用Out参数主要是用于返回多个变量

  示例:

1     int[] b = { 1, 2, 3, 4, 5 };    //有一个数组
2     int max;                //用来接收返回的最大值
3     int min;                //用来接收返回的最小值
4     int sum;
5     int avg;
6     OutTest(b,out max,out min,out sum,out avg);
7     Console.WriteLine("最大:{0},最小:{1},总和:{2},平均:{3}",max,min,sum,avg);
 1 public static void OutTest(int[] a, out int max, out int min, out int sum, out int avg)
 2         {
 3             //使用OUT参数要注意,每个OUT参数都必须赋值才能使用,因为当没有给OUT参数赋值的时候,就不知道要返回什么数值了
 4             max = a[0];
 5             min = a[0];
 6             sum = 0;
 7             avg = 0;
 8             for (int i = 0; i < a.Length; i++)
 9             {
10                 if (max < a[i])
11                 {
12                     max = a[i];  //重新赋值最大值
13                 }
14                 else if (min > a[i])
15                 {
16                     min = a[i];  //重新赋值最小值
17                 }
18 
19                 sum += a[i];     //计算总和
20             }
21             //计算平均值
22             avg = sum / a.Length;
23 
24         }

  注意:使用OUT参数要注意,每个OUT参数都必须赋值才能使用,因为当没有给OUT参数赋值的时候,就不知道要返回什么数值了,并且使用的时候也要加上Out关键字

2.Ref参数

  作用:作为传地址类型的,会修改传入的变量的值。

  示例:

1     int a1 = 0;
2     int b1 = 0;
3     RefTest(ref a1, ref b1);    //传入的参数必须要先赋值才能传递
4     Console.WriteLine("a1={0},b1={1}",a1,b1);
5     public static void RefTest(ref int a,ref int b)
6         {
7             a = 100;
8             b = 200;
9         }

  注意:传入的参数之前必须要先赋值才能传递,注意,但是如果使用数组传递的话,可以不适用ref,方法外的变量也会发生变化。

  例如:

            int[] b = { 4, 5, 6, 7, 8, 9 };
            Console.WriteLine("反转前:");
            for (int i = 0; i < b.Length; i++)
            {
                Console.WriteLine(b[i]);
            }
            Console.WriteLine("反转后:");    //这里并没有使用ref参数,但是也改变了函数外部的数组b,这里数组是一个特例!
            FanZhuan(b);
            for (int i = 0; i < b.Length; i++)
            {
                Console.WriteLine(b[i]);
            }   
public static void FanZhuan(int[] a)
        {
            int temp;
            for (int i = 0; i < a.Length / 2; i++)
            {
                temp = a[i];
                a[i] = a[a.Length - 1 - i];
                a[a.Length - 1 - i] = temp;
            }
        }

 

 

 

3.params参数

  作用:可变参数,可以输入多个参数,数量可以灵活变化

  示例:

 1 string name = "老王";
 2 ParamsTest(name, 96, 95, 68);   //这里使用了params参数,后面的几个参数表示的是可以输入对应函数的相应参数数组的类型的数据,个数不限
 3      
 4         /// <summary>
 5         /// params参数使用范例
 6         /// </summary>
 7         /// <param name="name">传递一个姓名</param>
 8         /// <param name="score">这里表示可以接受多个数组类型的数值</param>
 9         /// params作用是将接受到的数值自动转换为参数的数组元素
10         /// params可变参数必须是最后一个参数,不能放在中间
11         public static void ParamsTest(string name, params int[] score)
12         {
13             int sum=0;
14             for(int i=0;i<score.Length;i++)
15             {
16                 sum += score[i];
17             }
18             Console.WriteLine("{0}的总成绩为:{1};",name,sum);
19         }
20     }

 

  注意:使用params参数注意两点,可变的参数类型必须和方法中数组的参数类型相同,并且必须放在最后一个!