假如,我们在多个地方有相同的代码,希望代码能像变量一样被储存,修改一处就能改所有的地方。
例如
int hp = 100;
Console.WriteLine("勇者来到了新的场景,生命值回满");
hp = 100;
Console.WriteLine("勇者与怪物交战,受到20点伤害");
hp -= 20;
Console.WriteLine("勇者与怪物交战,受到20点伤害");
hp -= 20;
Console.WriteLine("勇者来到了新的场景,生命值回满");
hp = 100;
Console.WriteLine("勇者与怪物交战,受到20点伤害");
hp -= 20;
中间穿插的事件,不能简单地使用循环来完成代码的重复执行。
函数
我们可以使用函数来实现这个功能。
声明函数的语法是:返回类型+函数名+小括号+大括号
无返回值的函数
如果函数不返回任何值,那么使用void关键字写在返回类型处
void fight()
{
Console.WriteLine("勇者与怪物交战,受到20点伤害");
hp -= 20;
}
void rest() {
Console.WriteLine("勇者来到了新的场景,生命值回满");
hp = 100;
}
如果希望使用这个函数,则在需要的地方写:函数名+小括号
任何函数都视为操作语句,可以独立放置。
int hp = 100;
rest();
fight();
fight();
rest();
fight();
函数的作用范围
函数也有作用域的限制,同样也是所处的花括号。
但函数作用范围可以延申到定义前。
函数和函数之间,函数和变量之间,都不能重名。
return
终止函数
在函数中可以使用return语句来强行终止后续内容。
return也是一种流程控制语句。
有返回值的函数
如果返回类型不是void,那么这个函数可以会产生一个值被调用者接收。
int ReadInt()
{
Console.WriteLine("请输入一个数");
string s = Console.ReadLine();
int i = int.Parse(s);
return i;
}
int a = ReadInt();
int b = ReadInt();
Console.WriteLine("你输入的两个数,乘起来的结果为" + a * b);
具有返回值的函数必须使用return语句脱离函数。(死循环不算脱离函数)
return关键字后面写符合类型的值。
如果是无返回的函数,return后面不能跟随值。
流程控制
特别注意如果你的方法内的return语句是配合流程控制语句使用的,
你需要让VS觉得这个代码能在任何情况都能经过return,而不能仅仅是你觉得