進階參數
- out參數
- ref參數
- params參數
out參數結構
作用:
- 一個方法中,可以傳回多個不同類型的值。
-
可以直接對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;
}
}
}