内容正文:
7.2 方法
算法与程序设计--C#
同步精品课堂
河北科学技术出版社
教学目标
一
理解方法的概念及其在类中的作用
掌握 static关键字的使用及其在方法中的作用
掌握方法的声明方式,包括访问修饰符、返回类型、方法名和参数列表
教学目标
01
02
03
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
教学重难点
二
教学难点
1、方法的声明格式及其各部分的作用
2、静态方法的定义和调用方式
教学重点
1、 引用参数和输出参数的区别及其使用
2、静态方法与实例方法的区别及其适用场景
教学难点
导入新课
三
讨论:
在日常生活中,我们经常会进行一些重复性的操作。例如,制作一杯咖啡,通常需要经过磨豆、煮水、冲泡等一系列固定的步骤。每次制作咖啡时,我们不需要重新思考每一个步骤,而是可以按照一套既定的流程来完成。在编程中,类的方法就类似于这样一套固定的操作流程,它将一系列的代码逻辑封装起来,方便我们重复使用。
任务一
1
方法的声明
新知讲授
四
方法的概念
方法是C#中的代码块,用于执行特定的操作或功能。它们是类的成员,用于定义类的行为,如人是一个类,那么人的说话行为、唱歌行为、吃饭行为都是一个方法。方法是一组语句的集合,用于执行特定的任务。在C#中,方法可以在类内部或类的外部定义。
类的方法是一组执行特定任务的语句块,它封装了一段代码逻辑,使得代码可以被重复调用。方法可以接受输入参数,并且可以返回一个值。
方法是类的行为:方法描述了类的操作和行为,是类的行为成员。
方法用于执行代码:方法包含一组语句,可以执行各种任务,从数学计算到文件操作等。
新知讲授
四
方法的声明
方法的声明包括方法的名称、返回类型、参数列表和方法体。
➽ 语法
访问修饰符 返回值类型 方法名([参数列表])
{
方法体;
return 返回值;//可选
}
return的作用:
1、在方法中返回要返回的值;
2、立即结束本次方法;
新知讲授
四
➽ 说明:
(1)访问修饰符:指定方法的可见性(public、private、protected 等)。
(2)返回类型:指定方法执行后返回的数据类型,可以是基本数据类型、类、结构体等。如果方法不返回值,返回类型为 void。
(3)方法的名称:按照命名规范使用帕斯卡命名法,首字母大写。
(4)参数列表:包括方法接受的参数,用于向方法传递数据。
(5)方法体:包含方法的操作,一组语句,定义了方法的具体行为。
新知讲授
四
方法的命名规范和参数列表
方法的名称通常使用帕斯卡命名法,即首字母大写,例如 CalculateTotal。
参数列表:参数列表包括方法接受的参数,参数由名称和数据类型组成。参数之间使用逗号分隔,例如 (int a, int b)。参数列表可以为空。
命名规范和参数列表的设计应当根据方法的用途和可读性来确定。合适的命名和清晰的参数列表有助于代码的可维护性和可理解性。
新知讲授
四
➽分析下列程序的运行结果。
static void Main(string[] args)
{ while (true)
{ Console.WriteLine("Hello World");
// break;
// continue;
//return; }
Console.WriteLine("Hello.Net");
Console.ReadKey();
}
新知讲授
四
➽示例:
class Calculator
{
// 定义一个计算两个整数和的方法
public int Add(int num1, int num2)
{
int result = num1 + num2;
return result;
}
}
class Program
{
static void Main()
{
Calculator calc = new Calculator();
int sum = calc.Add(3, 5);
Console.WriteLine("两数之和为: " + sum);
}
}
新知讲授
四
分析:
1、Calculator 类中定义了一个 Add 方法,用于计算两个整数的和。
2、public 是访问修饰符,表示该方法可以被外部类访问。
3、int 是返回类型,表示该方法返回一个整数。
4、Add 是方法名,(int num1, int num2) 是参数列表,包含两个整数类型的参数。
5、在 Main 方法中,创建了 Calculator 类的对象 calc,并调用 Add 方法计算两数之和。
任务二
2
方法的参数
新知讲授
四
1、值参数
值参数是最常见的参数传递方式,它将实参的值复制给形参。在方法内部对形参的修改不会影响实参的值。
➽示例:
class ValueParameterExample
{
public void ChangeValue(int num)
{
num = num * 2;
Console.WriteLine("方法内部修改后的值: " + num);
}
}
新知讲授
四
1、值参数
class Program
{ static void Main()
{
ValueParameterExample example = new ValueParameterExample();
int number = 10;
Console.WriteLine("调用方法前的值: " + number);
example.ChangeValue(number);
Console.WriteLine("调用方法后的值: " + number); }}
新知讲授
四
1、值参数
分析:
(1)在 ChangeValue 方法中,形参 num 接收实参 number 的值。
(2)在方法内部对 num 进行修改,但不会影响 Main 方法中的 number 的值。
新知讲授
四
2、ref参数
使方法参数按引用传递。当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。传递参数的引用给方法,可以影响原始值。如果要使用ref参数,则方法声明和调用方法都必须显式使用ref关键字。
➽说明
(1)ref关键字只对跟在它后面的参数有效;
(2)实参和形参数据类型必须完全匹配;
(3)实参只能是变量,不能是常量或表达式;
(4)ref参数在调用之前,必须要进行赋值。
新知讲授
四
2、ref参数
class RefParameterExample
{
public void ChangeValue(ref int num)
{
num = num * 2;
Console.WriteLine("方法内部修改后的值: " + num);
}
}
class Program
{
static void Main()
{
RefParameterExample example = new RefParameterExample();
int number = 10;
Console.WriteLine("调用方法前的值: " + number);
example.ChangeValue(ref number);
Console.WriteLine("调用方法后的值: " + number);
} }
新知讲授
四
2、ref参数
分析:
(1)在 ChangeValue 方法的参数列表中使用 ref 关键字声明 num 为引用参数。
(2)在调用方法时,需要在实参前加上 ref 关键字。
(3)方法内部对 num 的修改会影响 Main 方法中的 number 的值。
新知讲授
四
3、输出参数
用于定义输出参数,返回多个值,参数通过引用传递,但参数的初始值不重要,不用初始化即可使用。如果要使用out参数,则方法声明和调用方法都必须显式使用out关键字。
➽说明
(1)out关键字只对跟在它后面的参数有效;
(2)因是引用参数,所以实参和形参数据类型必须完全匹配;
(3)实参只能是变量,不能是常量或表达式;
(4)out参数在调用前可以不用赋值;
(5)使用out可以同时返回多个值。
新知讲授
四
3、输出参数
class OutParameterExample
{
public void GetValues(int num, out int square, out int cube)
{
square = num * num;
cube = num * num * num;
}
}
class Program
{static void Main()
{OutParameterExample example = new OutParameterExample();
int number = 3;
int resultSquare, resultCube;
example.GetValues(number, out resultSquare, out resultCube);
Console.WriteLine("{number} 的平方是: "+resultSquare);
Console.WriteLine("{number} 的立方是: "+resultCube); }}
新知讲授
四
3、输出参数
分析:
(1)在 GetValues 方法的参数列表中使用 out 关键字声明 square 和 cube 为输出参数。
(2)在调用方法时,实参 resultSquare 和 resultCube 不需要初始化。
(3)方法内部必须对输出参数进行赋值。
新知讲授
四
4、数组参数(params类型)
params参数传递参数的值给方法,不影响原始值,用来指定在参数数目可变时采用的方法参数,适用于有多个相同类型的参数。使用params可以自动把你传入的值按照规则转换为一个新建的数组。
➽说明
(1)只能在一维数组上使用params参数;
(2)不允许使用ref或者out修饰params参数;
(3)一个方法只能有一个params参数;
任务三
3
static关键字
模式窗体就是当该窗体显示时,其他窗体不可用,只有将模式窗体关闭之后,其他窗体才能恢复可用状态。
模式窗体使用ShowDialog()方法显示窗体,
新知讲授
四
1、静态字段: 静态字段是类级别的字段,它们在类的所有实例之间共享相同的值。静态字段通常用于存储类级别的数据。
2、静态属性: 静态属性是可以用于获取或设置类级别的数据的特殊成员。它们提供对静态字段的封装。
3、静态方法: 静态方法是属于类而不是类的实例的方法,静态方法不对特定实例进行操作。
静态成员类型
模式窗体就是当该窗体显示时,其他窗体不可用,只有将模式窗体关闭之后,其他窗体才能恢复可用状态。
模式窗体使用ShowDialog()方法显示窗体,
新知讲授
四
1、静态字段的声明:使用static关键字。
例如: public static int myStaticField;
2、静态属性的声明:使用 static 关键字和 get、set 访问器。
例如: public static int MyStaticProperty { get; set; }
3、静态方法的声明:使用 static 关键字。
例如: public static void MyStaticMethod()
声明使用静态成员
模式窗体就是当该窗体显示时,其他窗体不可用,只有将模式窗体关闭之后,其他窗体才能恢复可用状态。
模式窗体使用ShowDialog()方法显示窗体,
新知讲授
四
类的数据成员可以分为静态成员和实例成员。静态成员是和类相关联的,不依赖特定对象的存在,而实例成员是和对象相关联的,访问实例成员依赖于实例的存在。
➽以下是两者主要区别:
(1)静态成员属于类,实例成员属于类的实例。
(2)静态成员在整个应用程序中只有一个实例,而实例成员每个类实例都有自己的副本。
(3)静态成员可以通过类名访问,而实例成员需要通过类的实例访问。
(4)静态成员通常用于表示全局或共享数据,而实例成员用于表示对象特定的数据。
静态成员与实例成员的区别
模式窗体就是当该窗体显示时,其他窗体不可用,只有将模式窗体关闭之后,其他窗体才能恢复可用状态。
模式窗体使用ShowDialog()方法显示窗体,
新知讲授
四
➽ static关键字示例
public class MathUtils
{
public static int Square(int num)
{
return num * num;
}
}
class Program
{
static void Main()
{
int result = MathUtils.Square(5);
Console.WriteLine("The square of 5 is: " + result);
}
}
师生互动
五
1、总结方法参数的类型;
2、总结static关键字的使用场景;
讨论
随堂练习
六
1、在C#中,方法是类的________,用于定义行为。
答案:成员
解析:方法用于定义行为, 是类的成员。
2、在C#中,static方法可以通过________直接调用,也可以通过________调用。
答案:类名 对象名
解析:在类中,static通过类名来调用,也可以创建一个对象来进行调用。
随堂练习
六
3、以下关于方法的描述,正确的是( )
A. 方法在类中声明
B. 方法不能有返回值
C. 方法不能有参数
D. 方法名可以使用任意字符
答案:A
解析:在 C# 中,方法通常在类、结构体或接口中声明,所以方法一般是在类里声明的.
随堂练习
六
4、 关于C#中方法的命名规则,以下说法错误的是( )
A. 方法名可以包含字母和数字
B. 方法名不能以数字开头
C. 方法名可以与关键字相同
D. 方法名通常使用帕斯卡命名法
答案:C
解析:方法名不能与C#关键字相同,例如不能使用int、class等作为方法名。
随堂练习
六
5、关于static关键字,以下正确的是( )
A. static方法属于类本身,而不是类的实例
B. static方法可以通过对象调用
C. static方法可以访问实例成员
D. static方法必须使用this关键字
答案:A
解析:static方法属于类本身,不能通过对象调用,也不能访问实例成员。
随堂练习
六
6、以下关于值参数的说法,正确的是( )
A. 值参数传递的是变量的引用
B. 对值参数的修改会影响原始变量
C. 值参数在方法调用时会复制一份原始值
D. 值参数只能是基本数据类型
答案:C
解析:值参数传递的是变量的值,在方法调用时会复制一份原始值到方法内部,对值参数的修改不会影响原始变量。值参数可以是基本数据类型,也可以是引用类型,只要传递的是值。
课堂小结
七
谢谢
$$