静态字段模拟全局变量,只是让字段可以被各个局部区域访问;
1. out关键字
out 必须要求在内部进行赋值
out可以返回多个类型相同的值,也可以返回多个不同的
getsum(arr, out sum, out avg);
//使用out avg意思是这个avg参数不用return返回来,
//Out已经在内部完成返回的操作了,直接输出即可
*******************
public static void getsum(int[] arr, out int sum, out int avg) //注意这里的写法
{
sum = 0;//在内部赋值
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
//sum = j;
avg = sum / arr.Length;
}
2. ref关键字
在无返回值的情况下,可用ref变量中的值改变并且带回;
int number = 200;
function(ref number);
WriteLine(number);
**************************************************
public static void function(ref int number)
{
number *= 3;
}
ref和out的区别:ref不一定要给它赋值,也可以将变量中的值改变,而Out则必须在函数内部给她赋值
3. params关键字
//params关键字
//1. params可以接受多个同种类型的值,把多个值当一个来传递
//2. params的值可以是空的
//3. params在形参处,必须在最后声明,如果在前面会报错
//public static void sum(******, params int[]变量)
//4. 同一个方法中,只能存在一个params
int[] arr = { 1, 2, 3, 5, 8, 7, 3 };
Sum(1, 2, 3, 5, 8, 7, 3);
*******
public static void Sum(params int[] number)
{
int sum = 0;
for (int i = 0; i < number.Length; i++)
{
sum += number[i];
}
WriteLine(sum);
}
4.方法重载(重点)
在一个类中,可以有多个重名的方法,被称之为方法的重载;
他们唯一的区别就是:参数的不同
返回值的不同(数据类型
),并不构成重载
Sum();
********
//下面这些函数名都是一样的,唯一不同就是参数的个数
public static void Sum(params int[] number)
{
int sum = 4;
}
public static void Sum(int num, params int[] number)
{
int sum = 5;
}
public static void Sum(int num, int arr, params int[] number)
{
int sum = 6;
}
5. 递归
就是方法调用自己
WriteLine("请输入一个数字:");
int number = Convert.ToInt32(ReadLine());
Sum(number);
ReadKey();
*************
public static void Sum(int number)
{
if(number==107)
{
WriteLine("hello!nice to meet you ");
}
else
{
WriteLine("请重新输入一个数字:");
number = Convert.ToInt32(ReadLine());
Sum(number);
}
}