params 接数组
数组任意类型,实现传入n个参数
例如 static void k(params int [] a)
k(1, 2, 3);
函数参数中也可能有别的参数
函数参数中最多出现一个params关键字, 并且一定是在最后一组参数,前面可以有n个其他参数
params 接数组
数组任意类型,实现传入n个参数
例如 static void k(params int [] a)
k(1, 2, 3);
函数参数中也可能有别的参数
函数参数中最多出现一个params关键字, 并且一定是在最后一组参数,前面可以有n个其他参数
internal class Program
{
static float[] CalaulateNormal(params float[] data)
{
float sum = 0;
float avarage = 0;
for (int i = 0; i < data.Length; i++)
{
sum += data[i];
}
avarage = sum / data.Length;
return new float[] {sum, avarage};
}
static float[] CalculateDivision(params float[] data)
{
float sumOdd = 0;
float sumEven = 0;
for (int i = 0; i < data.Length; i++)
{
if (data[i] % 2 == 0)
{
sumEven += data[i];
}
else
{
sumOdd += data[i];
}
}
return new float[] {sumOdd, sumEven};
}
static void Main(string[] args)
{
Random randomize = new Random();
Console.WriteLine("请输入生成多少个数字:");
int numOfNum = int.Parse(Console.ReadLine());
float[] toCalculate = new float[numOfNum];
for (int i = 0; i < toCalculate.Length; i++)
{
toCalculate[i] = randomize.Next(1000);
Console.Write(toCalculate[i]+" ");
}
float[] A_result = CalaulateNormal(toCalculate);
float[] A_resultOddAndEven = CalculateDivision(toCalculate);
Console.WriteLine("和为" + A_result[0] + ",平均数为" + A_result[1]);
Console.WriteLine("奇数和为" + A_resultOddAndEven[0] + ",偶数和为" + A_resultOddAndEven[1]);
}
}
//举例 函数要计算 n个整数的和
//static int Sum(int a, int b,..........)
//变长参数关键字 params
//params int[] 意味着可以传入n个int参数 n可以等于0 传入的参数会存在arr数组中
// 注意:
//1.params关键字后面必为数组
//2.数组的类型可以是任意的类型
//3.函数参数可以有 别的参数和 params关键字修饰的参数
//4.函数参数中只能最多出现一个params关键字 并且一定是在最后一组参数 前面可以有n个其它参数
#region 知识点三 参数默认值
//有参数默认值的参数 一般称为可选参数
//作用是 当调用函数时可以不传入参数,不传就会使用默认值作为参数的值
//注意:
//1.支持多参数默认值 每个参数都可以有默认值
//2.如果要混用 可选参数 必须写在 普通参数后面
//总结
// 1 变长参数关键字 params
// 作用: 可以传入n个同类型参数 n可以是0
// 注意:
// 1. params后面必须是数组 意味着只能是同一类型的可变参数
// 2. 变长参数只能有一个
// 3. 必须在所有参数最后写变长参数
// 2 参数默认值(可选参数)
// 作用:可以给参数默认值 使用时可以不传参 不传用默认的 传了用传的
// 注意:
// 1. 可选参数可以有多个
// 2. 正常参数比写在可选参数前面,可选参数只能写在所有参数的后面
变长参数关键词
params int[] arr
//注意:
//1.params关键字后面必为数组
//2.数组的类型可以是任意的类型
//3.函数参数可以有别的参数和params关键字修饰的参数
//4.函数参数中只能最多出现一个params关键字并且一定是在最后一组参数前面可以有n个其它参数
/*********************************************/
参数默认值(可选参数)
//有参数默认值的参数—般称为可选参数
//作用是当调用函数时可以不传入参数,不传就会使用默认值作为参数的值
//注意:
//1.支持多参数默认值每个参数都可以有默认值
//2.如果要混用可选参数必须写在普通参数后面
static int Sum(params int[] arr)params表示变长参数,后面必须接数组,参数数可以是0个。函数参数中最多只能有一个params,并且只能是最后一组参数,前面还可以有n个其他参数
有默认值的参数都要写在普通参数后面
变长参数params,可以直接在调用时输入变量用,隔开
只能声明在最后
参数默认值,默认参数的后面不可有无默认值的参数
## 一、函数语法复习
1. 静态关键词 可选 目前对于我们来说必须写
2. 返回值 没有返回值填void 可以填写任意类型的变量
3. 函数名 帕斯卡命名法
4. 参数可以是0~n个,前面可以加ref out用来传递想要在内部改变内容的变量
5. 如果返回值不是void,那么必须有return对应类型的内容,return可以打断函数语句块中的逻辑,直接停止后面的逻辑
## 二、 变长参数关键词
变长参数关键字 params
static int Sum(params int[arr]){}
Sun(1,2,3,4,5)
注意⚠️
1. params关键词后面必为数组
2. 数组的类型可以是任意类型
3. 函数参数可以有 别的参数和params关键词修饰的参数
4.函数参数中只能最多出现一个params关键词,并且一定是在最后一组参数 前面可以有n个其他参数
## 三、参数默认值
有参数默认值的参数 一般称为可选参数 作用是:当调用函数时可以不传入参数,不传就会使用默认值作为参数的值
注意⚠️
1. 支持多参数默认值 每个参数都可以有默认值
2. 如果要混用 可选参数 必须写在普通参数后面
static int Speak(string str = "test"){}
Speak();
## 练习题
### 1
使用param参数,求多个数字的和以及平均数
```
static int SumSuper(params int[] nums)
{
int sum = 0;
for (int i = 0; i < nums.Length; i++)
{
sum += nums[i];
}
return sum;
}
```
### 2
使用param参数,求多个数字的偶数和奇数和
```
static int[] SumSuper2(params int[] nums)
{
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] % 2 == 0)
{
sum1 += nums[i];
}
else
{
sum2 += nums[i];
}
}
return new int[] { sum1, sum2};
}
```
变长参数关键字 params
例如 static int Sum(params int[] arr)
params关键字后面必为数组
数组的类型可以是任意的类型
函数参数中只能最多出现一个params关键字,并且是在最后一组参数,前面可以有其他n个参数
参数默认值
有参数默认值的参数,一般称为可选参数
当调用函数时可以不传入参数,不传入就会使用默认值作为参数的值,传了参数就用传的
可选参数可以有多个
如果要混用可选参数,必须写在普通参数后面