第五节 方法的定义、调用与调试
视频链接:刘铁猛老师的《C#语言入门详解》
https://www.youtube.com/watch?v=EgIbwCnQ680&list=PLZX6sKChTg8GQxnABqxYGX2zLs4Hfa4Ca
方法的由来
- 方法(method)的前身是C/C++语言的函数(function)
- 方法是面向对象范畴的概念,在非面向对象语言种仍然称为函数
- 永远是类(或结构体)的成员
- C#语言种函数不可能独立于类(或结构体)之外
- 只有作为类(结构体)的成员时才被称为方法
- C++是可以的,称为“全局函数”
- 是类(或结构体)最基本的成员之一
- 最基本的成员只有两个——字段和方法(成员变量和成员函数),本质还是数据+算法
- 方法表示类(或结构体)“能做什么事”
- 为什么需要方法和函数
- (1)隐藏复杂的逻辑
- (2)把大算法分成小算法
- (3)复用(reuse,重用)
方法的声明与调用
- 方法的命名规范
- 每个单词首字母大写
- 需要以动词或者动词短语作为名字
- 重温静态(static)方法和实例方法
- 调用方法
- 实参
- 调用方法时的实参列表与定义方法时的形参列表相匹配
构造器
- 构造器(constructor)是类型的成员之一
- 狭义的构造器指的是“实例构造器”(instance constraintor)
- 如何调用构造器
- 声明构造器
- 构造器的内存原理
方法的重载(Overload)
- 调用重载方法的示例
- 声明带有重载的方法
- 方法签名(method signature)由方法的名称、类型形参(Add
())的个数和它的每一个形参(按从左到右的顺序)的类型和种类(值、引用ref或输出out)组成。方法签名不包括返回类型。 - 实例构造函数签名由它的每一个形参(按从左到右的顺序)的类型和种类(值、引用或输出)组成。
- 重载决策(到底调用哪一个重载):用于在给定了参数列表和一组候选函数成员的情况下,选择以个最佳函数成员来实施调用。
- 方法签名(method signature)由方法的名称、类型形参(Add
如何对方法进行debug?
- 设置断点(breakpoint)
- 观察方法调用时的call back(可以看到 被谁调用)
- Step-in,Step-over,Step-out(in 是一步一步仔细的;over是大范围的;out可以直接跳到 调用它的那里的位置)
- 观察局部变量的值与变化(Locals 栏)
方法的调用与栈的关系
- 方法调用时栈内存的分配
- 对stack frame的分析(一个方法被调用时的它在栈内存的布局)