方法的由来
方法是面向对象的概念,在非面向对象语言中称为函数
方法是类的成员,C#中方法不能独立在类或者结构体之外
是类最基本的成员之一,另一个是成员变量
方法或者函数的作用:隐藏复杂的逻辑、代码复用
方法命名建议首字母大写
方法的定义与调用
- 访问修饰符 - 控制方法的可访问性,如 public、private、protected、internal 等。
- 返回类型 - 方法执行后返回给调用者的值的类型。如果方法不返回任何值,则使用 void。
- 方法名 - 方法的名字,应遵循命名规范,通常以动词开头。
- 参数列表 - 方法可以接受零个或多个参数。每个参数都有自己的类型和名称,多个参数之间用逗号分隔。
- 方法体 - 包含实际执行的代码块,用 {} 括起来
parameter:形参 arguement:实参
构造器
构造函数的内存机制
Student sut = new Student(001 ,"张三");
声明了一个Student类型的引用变量 ,创建了一个Student的实例,用()调用了有参构造方法
在栈里面开辟引用内存的变量 ,然后在堆里面开辟空间存放实例( Id(一个整型变量)和 Name(一个字符串类型的引用))
并且在堆开辟一块空间存放Name
- Student 对象的 Id 和 Name 的引用存储在同一块内存中。
- 字符串 "张三" 的实际内容存储在托管堆上的另一块内存中。
- 字符串的引用(即 Name 字段的值)指向字符串内容所在的内存位置。
方法的重载
重载的示例
19 表示Console类中定义了19个WriteLine() 的方法
重载是WriteLine() 能打印不同类型的值的原因
声明带有重载的方法
- 方法签名要不同
- 其中方法名要相同
- 参数列表 参数顺序不同
- 或者参数种类不同 def int a != int a
- 方法签名不包含返回类型
- 重载决策:选择最符合函数成员进行调用
如何对方法进行debug
- 设置断点 breakpoint
- 设置方法调用时的call stack 调用栈
- Step-in,Step-over,Step-out
-
- Step-in:逐语句 语句一条一条执行,会进入方法 从bug定位范围仔细寻找
- Step-over:逐过程:不会进入方法 ,快速返回结果 快速定位bug范围
- Step-out:跳出:跳出当前方法,返回方法调用者那条
- 观测局部变量的值与变化
Call Stack 从上到下 指向当前方法的调用者
方法的调用与栈*
未完待续.....