c#基础2-out-ref

  //out参数要求在方法的内部

1 double salary1 = 5000;
2             JiangJin(ref salary1);
3             Console.WriteLine(salary1);//5500
4             Console.ReadKey();
View Code

必须为其赋值

out、ref、params
1)、out参数。
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。
但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,
我们可以考虑使用out参数。
out参数就侧重于在一个方法中可以返回多个不同类型的值。

 1  /// <summary>
 2         /// 计算一个整数数组的最大值、最小值、平均值、总和
 3         /// </summary>
 4         /// <param name="nums">要求值得数组</param>
 5         /// <param name="max">多余返回的最大值</param>
 6         /// <param name="min">多余返回的最小值</param>
 7         /// <param name="sum">多余返回的总和</param>
 8         /// <param name="avg">多余返回的平均值</param>
 9         public static void Test(int[] nums, out int max, out int min, out int sum, out int avg, out bool b, out string s, out double d)
10         {
11             //out参数要求在方法的内部必须为其赋值
12             max = nums[0];
13             min = nums[0];
14             sum = 0;
15             for (int i = 0; i < nums.Length; i++)
16             {
17                 if (nums[i] > max)
18                 {
19                     max = nums[i];
20                 }
21                 if (nums[i] < min)
22                 {
23                     min = nums[i];
24                 }
25                 sum += nums[i];
26             }
27             avg = sum / nums.Length;
28 
29 
30             b = true;
31             s = "123";
32             d = 3.13;
33         }
View Code

2)、ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法。
ref参数要求在方法外必须为其赋值,而方法内可以不赋值。

 1  public static void JiangJin(ref double s)
 2         {
 3             s += 500;
 4 
 5         }
 6 
 7 double salary1 = 5000;
 8             JiangJin(ref salary1);
 9             Console.WriteLine(salary1);
10             Console.ReadKey();
View Code

3)、params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。
params可变参数必须是形参列表中的最后一个元素。

public static void Test(string name, int id, params int[] score)
        {
            int sum = 0;

            for (int i = 0; i < score.Length; i++)
            {
                sum += score[i];
            }
            Console.WriteLine("{0}这次考试的总成绩是{1},学号是{2}", name, sum, id);
        }

 int[] s = { 99, 88, 77 };
            Test("张三", 99, 100, 100, 100);
            Console.ReadKey();
View Code
原文地址:https://www.cnblogs.com/liuweiqiang11188/p/6676607.html