第五节 方法的定义、调用与调试

视频链接:刘铁猛老师的《C#语言入门详解》
https://www.youtube.com/watch?v=EgIbwCnQ680&list=PLZX6sKChTg8GQxnABqxYGX2zLs4Hfa4Ca

方法的由来

  • 方法(method)的前身是C/C++语言的函数(function)
    • 方法是面向对象范畴的概念,在非面向对象语言种仍然称为函数
  • 永远是类(或结构体)的成员
    • C#语言种函数不可能独立于类(或结构体)之外
    • 只有作为类(结构体)的成员时才被称为方法
    • C++是可以的,称为“全局函数”
  • 是类(或结构体)最基本的成员之一
    • 最基本的成员只有两个——字段和方法(成员变量和成员函数),本质还是数据+算法
    • 方法表示类(或结构体)“能做什么事”
  • 为什么需要方法和函数
    • (1)隐藏复杂的逻辑
    • (2)把大算法分成小算法
    • (3)复用(reuse,重用)

image.png

方法的声明与调用

  • 方法的命名规范
    • 每个单词首字母大写
    • 需要以动词或者动词短语作为名字
  • 重温静态(static)方法和实例方法
  • 调用方法
    • 实参
    • 调用方法时的实参列表与定义方法时的形参列表相匹配

构造器

  • 构造器(constructor)是类型的成员之一
  • 狭义的构造器指的是“实例构造器”(instance constraintor)
  • 如何调用构造器
  • 声明构造器
  • 构造器的内存原理

方法的重载(Overload)

  • 调用重载方法的示例
  • 声明带有重载的方法
    • 方法签名(method signature)由方法的名称、类型形参(Add())的个数和它的每一个形参(按从左到右的顺序)的类型和种类(值、引用ref或输出out)组成。方法签名不包括返回类型。
    • 实例构造函数签名由它的每一个形参(按从左到右的顺序)的类型和种类(值、引用或输出)组成。
    • 重载决策(到底调用哪一个重载):用于在给定了参数列表和一组候选函数成员的情况下,选择以个最佳函数成员来实施调用。

如何对方法进行debug?

  • 设置断点(breakpoint)
  • 观察方法调用时的call back(可以看到 被谁调用)
  • Step-in,Step-over,Step-out(in 是一步一步仔细的;over是大范围的;out可以直接跳到 调用它的那里的位置)
  • 观察局部变量的值与变化(Locals 栏)

方法的调用与栈的关系

  • 方法调用时栈内存的分配
    • 对stack frame的分析(一个方法被调用时的它在栈内存的布局)
posted @ 2023-06-08 08:18  不爱菠萝的菠萝君  阅读(53)  评论(0编辑  收藏  举报