天天看點

C# 進階參數 out/ref/params

進階參數

  1. out參數
  2. ref參數
  3. params參數

out參數結構

作用:

  1. 一個方法中,可以傳回多個不同類型的值。
  2. 可以直接對out參數指派,函數調用是會自動傳回out參數的值。

    此篇可作為比較:https://blog.csdn.net/shenqiankk/article/details/97273561

public static void Computer(普通參數,..,out 變量類型 變量,out 變量類型 變量,....){
	對變量進行指派;
}
           

out參數使用

out參數使用要求: 參數必須在方法内進行指派

class Program
{
	//主函數
    static void Main(string[] args)
    {
        #region out參數練習1
        int[] nums = new int[10];
        Random r = new Random();
        //定義out參數類型
        int max,min,sum;
        double average;
        //對數組随機指派
        for (int i=0;i<nums.Length;i++)
        {
            nums[i] = r.Next(1, 21);
            Console.Write(nums[i]+" ");
        }
        //換行
        Console.Write("\n");
        //調用方法,求數組的最大值,最小值,平均值,總和
        Computer(nums, out max, out min, out sum, out average);
        //輸出
        Console.WriteLine("最大值:{0}",max);
        Console.WriteLine("最小值:{0}",min);
        Console.WriteLine("總和:{0}",sum);
        Console.WriteLine("平均值:{0}",average);
        #endregion
    }

    /// <summary>
    /// 計算數組的最大值,最小值,總和,平均值
    /// </summary>
    /// <param name="nums">數組</param>
    /// <param name="max">最大值</param>
    /// <param name="min">最小值</param>
    /// <param name="sum">總和</param>
    /// <param name="average">平均值</param>
    public static void Computer(int[] nums,out int max,out int min,out int sum,out double average)
    {
        max = nums[0];
        min = nums[0];
        sum = 0;
        foreach (int n in nums)
        {
            if (n > max)
            {
                max = n;
            }else if (n<min)
            {
                min = n;
            }
            sum += n;
        }
        average = (sum * 1.0) / nums.Length;
    }
}
           

ref參數的結構

作用: 能夠把ref參數帶入方法重新指派,ref參數會帶着新的值離開方法。

public static void Change(普通參數,..,ref 變量類型 變量,ref 變量類型 變量,....){
	對變量重新指派,改變其值;
}
           

ref參數的使用

ref參數使用要求: 必須在方法外進行過指派

class Program
    {
        static void Main(string[] args)
        {
            #region ref練習
            //定義a,b變量
            int a = 10;
            int b = 20;
            //調用方法
            Change(ref a,ref b);
            //輸出a,b變量的值
            Console.WriteLine("a={0}, b={1}", a, b);
            #endregion
        }

        /// <summary>
        /// 交換兩個整數變量的值
        /// </summary>
        /// <param name="a">第一個整數</param>
        /// <param name="b">第二個整數</param>
        public static void Change(ref int a,ref int b)
        {
            a = a - b; //a=-10,b=20
            b = a + b; //a=-10,b=10
            a = b - a; //a=20,b=10
        }
    }
           

params參數結構

作用: 定義一個可變的數組參數,在傳參時可以傳任意長度數組

public static void Change(普通參數,..,params 數組類型 數組){
	對參數進行操作
}
           

params參數使用

params參數使用要求:

class Program
    {
        static void Main(string[] args)
        {
            int sum;
            //int[] nums = { 1, 2, 6, 8 };
            //params參數可以輸入的資料預設為數組元素,不限長度,同輸入int數組是同一效果
            Sum(out sum,1,2,3,5,8,9,7); 
            Console.WriteLine(sum);
        }


        public static void Sum(out int sum,params int[] nums)
        {
            sum = 0;
            foreach (int n in nums)
            {
                sum += n;
            }
        }
    }