第十四章:方法详解
本章目标
- 掌握C#中如何定义方法
- 没有参数和返回值的函数
- 有参数但没有返回值的函数
- 有参数且有返回值的函数
- 有多个参数的函数
本章内容
1、理解C#中的方法
概念:
C# 中的函数(也可以称为方法)是一段具有签名(由函数名、参数类型和参数修饰符组成的函数信息)的代码块,可以用来实现特定的功能。
一般情况下一个函数由以下几个部分组成:
- 访问权限修饰符:用于指定函数对一个类的可见性;public
- 返回值类型:用于指定函数返回值的数据类型;
- 函数名称:用于进行函数调用的唯一名称;
- 参数列表:在调用函数时需要传递给函数的参数,参数列表是可选的,可以为空;
- 函数主体:其中包含了实现函数功能的若干代码。
函数的声明:
1 2 3 4 5
| 访问修饰符 返回类型 方法名(参数列表 List) { 方法主体; 返回数据; }
|
另外需要注意的是,访问权限修饰符、参数列表和返回语句是可选的,可以省略。
函数的调用
想要调用我们定义好的函数,
首先需要将函数所在的类实例化为对象
然后通过对象.函数名() 的形式即可调用指定的函数,
这里有几点需要注意:
- 若函数在定义时参数列表中定义了若干参数,那么在调用时也应该在函数名后面的括号中填入相应数量的参数,并且与参数列表中的参数类型一一对应;
- 若函数在定义时没有定义参数列表,那么在调用函数时也不需要在函数名后面填入参数;
- 对于有返回值的函数,在调用函数时可以使用一个变量(可选)来接收函数的返回值,变量的类型要与函数返回值的类型相同。
提示:若调用同一个类中静态函数(使用 static 修饰的函数),则可以省略实例化对象的过程,直接使用函数名()的形式调用。
2、没有参数和返回值的函数
C# 中,如果函数不需要返回任何内容,则可以在定义函数时使用 void 来修饰返回值类型,语法如下:
1 2 3
| public void 方法名(){ 方法体; }
|
【示例】:定义学生类,创建方法,输入:大家好,我叫张三
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class Student{
public void SayHi(){ Console.WriteLine("大家好,我叫张三!"); } }
internal class Program { static void Main(string[] args) { Student stu=new Student(); stu.SayHi(); } }
|
运行结果如下:
3、有参数但没有返回值的函数
函数可以接收一个或多个数据作为参数,并在函数内部使用或处理传入的参数。语法如下 :
1 2 3
| public void 方法名(参数列表){ 方法体; }
|
【示例】:定义学生类,创建方法,定义输入张三参数,输出:大家好,我叫张三
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class Student{
public void SayHi(string name){ Console.WriteLine("大家好,我叫{0}!",name); } }
internal class Program { static void Main(string[] args) { string name="张三"; Student stu=new Student(); stu.SayHi(name); } }
|
4、有多个参数但没有返回值的函数
参数列表可以用逗号分隔,语法如下:
1 2 3
| public void 方法名(数据类型 参数1,数据类型 参数2,.....){ 方法体; }
|
【示例】:定义学生类,创建方法,定义输入姓名,年龄,爱好三个参数,输出相应内容!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class Student{
public void SayHi(string name,int age,string hobby){ Console.WriteLine("大家好,我叫{0},今年:{1},爱好:{2}!",name,age,hobby); } }
internal class Program { static void Main(string[] args) { string name="张三"; int age=20; string hobby="打篮球"; Student stu=new Student(); stu.SayHi(name,age,hobby); } }
|
输出结果:
注意事项:
- 调用方法时,实参的数量和形参数量要一致
- 调用方法时,实参的数据类型和形参的类型要匹配,顺序要相同
5、有参数且有返回值的函数
一个函数可以具有零个或任意数量的参数,也可以返回指定的数据,语法如下 :
1 2 3 4
| public 返回类型 方法名(数据类型 参数1,数据类型 参数2,.....){ 方法体; return 返回数据; }
|
【示例】:定义学生类,创建方法,定义输入姓名,年龄,爱好三个参数,返回相应的信息,在调用方输出相应内容!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public class Student{
public string SayHi(string name,int age,string hobby){ string returnString=string.Format("大家好,我叫{0},今年:{1},爱好:{2}!",name,age,hobby); return returnString; } }
internal class Program { static void Main(string[] args) { string name="张三"; int age=20; string hobby="打篮球"; Student stu=new Student(); string str=stu.SayHi(name,age,hobby); Console.WriteLine(str); } }
|
6、将对象作为方法的参数
在方法里面可以有N个参数,那么是否可以将对象作为参数传递呢?
【示例】:在学生类里面,创建一个方法,将老师作为参数传入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public class Teacher{ public string name; public int age; public void SayHi(){ Console.WriteLine("大家好,我是{0},今年{1}岁,以后我就是你们的授课老师!",name,age); } }
public class Student{ public void SayTeacher(Teacher teacher){ teacher.SayHi(); } }
internal class Program { static void Main(string[] args) { Teacher teacher=new Teacher(); teacher.name="刘老师"; teacher.age=30; Student stu=new Student(); stu.SayTeacher(teacher); } }
|
7、将对象数组作为参数传入方法
上例可以将对象作为参数传入方法,那么怎么将对象数组作为方法参数传入呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| public class Teacher{ public string name; public int age; public string teachingSubject; public void SayHi(){ Console.WriteLine("大家好,我是{0},今年{1}岁,以后我就是你们{2}授课老师!",name,age,teachingSubject); } }
public class Student{ public void SayTeacher(Teacher[] teachers){ foreach(Teacher t in teachers){ t.SayHi(); } } }
internal class Program { static void Main(string[] args) { Teacher teacher1=new Teacher(); teacher1.name="刘老师"; teacher1.age=30; teacher1.teachingSubject="C#"; Teacher teacher2=new Teacher(); teacher2.name="张老师"; teacher2.age=20; teacher2.teachingSubject="Java"; Teacher teacher3=new Teacher(); teacher3.name="王老师"; teacher3.age=35; teacher3.teachingSubject="Sql Server"; Teacher[] teachers=new Teacher[3]; teachers[0]=teacher1; teachers[1]=teacher2; teachers[2]=teacher3; Student stu=new Student(); stu.SayTeacher(teachers); } }
|
本章总结
掌握C#中的各种类型的方法
课后作业