1.函数
Main 主函数 = 入口函数 -主方法 -入口方法 static表示静态(修饰符),表示是一个静态函数,void代表没有返回值,如果有返回值void的位置要写返回值的类型,Main方法的名字,可以随意其函数名(要有意义), ()参数 string[] 参数的类型 args是形参,定义什么类型的形参,就要传递过来什么类型的参数可以定义多个方法,但是方法名不能重复定义函数,可以定义在Main函数的上面也可以在下面
// 定义一个方法,用来检验用户的名字
static void UserName(string name) // 形参,形式上的参数
{
Console.WriteLine("检验用户名");
Console.WriteLine($"用户名是{name}");
}
// 定义一个计算两个值相加的方法
static void Add(int a,int b)
{
Console.WriteLine(a+b);
}
// 返回的类型是决定返回值的类型
static int Add1(int a, int b)
{
int num = a+b;
// return 就是返回一个值,可以有也可以没有,看定义方法的需求,注意return后面的代码不会执行
return num;
}
static void Main(string[] args)
{
// UserName("张三"); // 实参,注意类型,形参定义的是什么类型,就要传递过去什么类型的实参
// Add(10,20);
int s = Add1(10, 20); // 如果有返回值就要接收才会有结果,或者直接打印
Console.WriteLine(s);
}
2.参数数组
string str = Console.ReadLine(); string[ ] strarr = str.Split(' '); int[ ] numarr = new int[strarr.Length]; for (int i = 0;i < numarr.Length; i++) { numarr[i] = Convert.ToInt32(strarr[i]); }
// 如何求一组数据的和
// 定义一个计算一组数据和的方法
static int Add(int[] array) // 参数是一个数组,在调用这个函数时,传入的实参要是一个整数类型的数组
{
int sum = 0;
foreach (int item in array)
{
sum += item;
}
return sum;
}
static int Add2(params int[] num) // params 可以传递任意参数,然后会将这些参数变成一个数组,传递到方法里
{
int sum = 0;
foreach (int item in num)
{
sum += item;
}
return sum;
}
// 定一个找最大值的方法
static int GetMax(params int[] arr)
{
int max = arr[0];
for (int i = 0; i < arr.Length; i++)
{
if(max < arr[i])
{
max = arr[i];
}
}
return max;
}
3.方法的重载
方法的重载,参数类型不同,参数个数不同,参数顺序不同,(编译器通过不同的参数去识别调用哪一个方法) 编译器会根据调用函数时传递参数的个数,类型,顺序,去判断所调用的函数(方法) 方法重载三种条件:1.参数的类型不同 2.参数的个数不同 3.参数的顺序不同,就可以实现方法的重载 注意: 函数定义的时候是不允许方法名相同的,但是方法重载是可以的
static void GetValue(int a, int b)
{
Console.WriteLine(a + b);
}
// 参数类型不同
static void GetValue(double a, double b)
{
Console.WriteLine(a + b);
}
// 参数个数不同
static void GetValue(int a, int b, int c)
{
Console.WriteLine(a + b + c);
}
// 参数顺序不同
static void GetValue(int a, double b, int c)
{
Console.WriteLine(a + b + c);
}
static void Main(string[] args)
{
GetValue(10, 20);
GetValue(2.14, 3.56);
GetValue(10, 20, 30);
GetValue(10, 3.6, 20);
}
4.方法的递归
递归就是函数的自身调用自身.注意:方法的递归要有终止条件,方法的递归属于循环,如果没有终止条件就会陷入死循环,在程序中是不允许出现的
static void Text()
{
Console.WriteLine("Text");
// 在方法的内部调用自身
// Text();
}
// 求某个值的阶乘
static int F(int x)
{
if(x == 1)
{
return 1;
}
int y = x * F(x - 1);
return y;
}
static int F1(int n)
{
if (n == 1)
{
return 1;
}
int y = n * F1(n - 1);
return y;
}
static int F2(int n)
{
if (n == 1)
{
return 1;
}
return F2(n-1) + F1(n);
}
static void Main(string[] args)
{
// Text();
// 10的阶乘 10*9*8*7*6*5*4*3*2*1
// Console.WriteLine(F(10));
Console.WriteLine(F2(10));
}