CS2L6——函数基础
CS2L6——函数基础
本章代码关键字
1 | return //可以结束函数的执行,并返回其后边的值给外部 |
函数(方法)
函数(方法)本质是一块具有名称的代码块,可以使用函数(方法)的名称来执行该代码块。
函数(方法)是封装代码进行重复使用的一种机制
函数(方法)的主要作用:
- 封装代码
- 提升代码复用率
- 抽象化行为
例如,Main
就是一个函数,在程序启动时调用,为程序的起点,
其中 Console.WriteLine()
就是调用的 Console
类中的 WriteLine()
函数
1 | static void Main(string[] args) |
函数写在 class
或者 struct
里,return
可以提前结束函数逻辑 程序是线性执行的
函数写在哪里
一定写在 class
语句块 和 struct
语句块中!!!
函数基本语法
1 | //1 2 3 4 |
-
关于
static
,这不是必须的,但在没有学结构体和类之前, static 必须要写的 -
关于返回类型 引出一个新的关键字
void
,它表示函数没有返回值而返回类型可以写 任意的14种变量类型 + 复杂数据类型(数组、枚举、结构体、类
class
) -
关于函数名 使用帕斯卡命名法命名 即每个单词首字母都大写
-
参数不是必须的,可以有0~n个参数,参数的类型也是任意的:
任意的14种变量类型 + 复杂数据类型(数组、枚举、结构体、类class
),多个参数需要用逗号隔开
参数名也是用驼峰命名法 -
当返回值类型不是
void
时 必须通过return
来返回对于类型的内容 (注意即使是void
也可以选择性使用return
)
函数实际运用
-
无参无返回值
1
2
3
4
5
6
7
8
9
10static void SayHallo()
{
Console.WriteLine("Hallo world!");
//返回值类型是void时,return可省略
}
static void Main(string[] args)
{
SayHallo();
}输出:
1
Hallo world!
-
有参无返回值函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14//有参无返回值函数
static void SayYourName(string name)
{
Console.WriteLine("你的名字是:{0}", name);
}
static void Main(string[] args)
{
//传入一个string常量
SayYourName("MrTang");
//传入一个string变量
string str = "MrTang";
SayYourName(str);
}输出:
1
2你的名字是:MrTang
你的名字是:MrTang -
无参有返回值函数
有返回值的函数要不直接拿返回值使用,要不就是拿变量接收结果,
虽然可以直接调用而不接收返回值,但是这样返回值就没有用了1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20//有参无返回值函数
static void SayYourName(string name)
{
Console.WriteLine("你的名字是:{0}", name);
}
//无参有返回值函数
static string WhatYourName()
{
return "MrTang";
}
static void Main(string[] args)
{
//传入一个返回值是string的函数
SayYourName(WhatYourName());
//有返回值的函数要不直接拿返回值使用
//要不就是拿变量接收结果
//虽然可以直接调用,但是这样返回值就没有用了
}输出:
1
你的名字是:MrTang
-
有参有返回值函数
1
2
3
4
5
6
7
8
9
10
11
12
13//有参有返回值函数
static int Sum(int a, int b)
{
//int c = a + b
//return c
//return右边也可以写表达式甚至是函数,会先将表达式计算完毕再return
return a + b;
}
static void Main(string[] args)
{
Console.WriteLine(Sum(1, 2));
}输出:
1
3
-
有参有多返回值函数
可以使用数组返回多个数,但是使用者需要知道这个数组的规则
C# 7 及以上的版本,可以使用元组来返回多返回值,详见:CS5L9——CSharp 7 功能和语法 的元组部分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17//有参有多返回值函数(缺点:多返回值以数组的形式返回出去,使用者需要知道这个数组的规则)
//例如:传入两个数 计算他们的和以及他们的平均数 得出结果返回出来
static int[] Calc(int a, int b)
{
int sum = a + b;
int avg = sum / 2;
//int [] arr = { sum, avg };
//return arr;
//不能是return {sum, avg},因为这种没有申明一个数组!!!
return new int[] { sum, avg };
}
static void Main(string[] args)
{
int[] arr = Calc(5, 7);
Console.WriteLine(arr[0] + " " + arr[1]);
}输出:
1
总和为:12,平均值为:6
关于return
即使函数没有返回值,我们也可以使用return
,return可以直接结束函数,不执行之后的代码,直接返回到函数外部
1 | static void Speak(string str) |
输出:
1 | MrTang |