刘铁猛C#(8)方法的定义、调用与调试(上)

刘铁猛C#(8)方法的定义、调用与调试(上)_第1张图片
刘铁猛C#(8)方法的定义、调用与调试(上)_第2张图片

函数在成为类的成员之后,就被成为方法。

方法永远都是类或者结构体(用struct生成)的成员

刘铁猛C#(8)方法的定义、调用与调试(上)_第3张图片

结构体跟类很相似,也能定义字段,方法和构造函数,都能实例化对象,但是数据存储不同。

struct Books{ public string title; public string author; public string subject; public int book_id;};

https://blog.csdn.net/Circle__Gossoon/article/details/52126583

这两种数据类型的本质区别主要是各自指向的内存位置不同。传递类的时候,主要表现为是否同时改变了源对象。

1.结构体是值类型,类是引用类型

虽然结构体的初始化也使用了new操作符,可是结构体对象依然分配在堆栈上而不是堆上

        类在传递的时候,传递的内容是位于托管内存中的位置,结构体在传递的时候,传递的内容是位于程序堆栈区的内容。当类的传递对象修改时,将同时修改源对象,而结构体的传递对象修改时,不会对源对象产生影响。

堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑

因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用

注: 

a.虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object 

  b.虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用 

2.结构体不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed

类完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承

虽然结构不能被继承,可是结构能够继承接口,方法和类继承接口一样

3.结构:不能包含显式默认构造函数;没有析构函数,没有abstract和sealed(因为不能继承);不能有protected修饰符,可以不使用new初始化

在结构中初始化实例字段是错误的

类: 有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。

如何选择结构还是类

讨论了结构与类的相同之处和差别之后,下面讨论如何选择使用结构还是类: 

1. 堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些 

2. 结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。 

3. 在表现抽象和多级别的对象层次时,类是最好的选择

4. 大多数情况下该类型只是一些数据时,结构时最佳的选择

方法调用的目的

1)复用 reuse

2)隐藏复杂的计算过程和逻辑

3)分解计算过程:自顶向下,逐步求精

刘铁猛C#(8)方法的定义、调用与调试(上)_第4张图片
刘铁猛C#(8)方法的定义、调用与调试(上)_第5张图片

方法的声明就是方法的定义

方法的构成包括

方法头:

有效的修饰符组合 + 方法名 + (参数列表)

1)有效的修饰符组合 

2)方法的名字 

方法的命名必须是一个动词或动词短语,所有单词的首字母大写。

3)参数列表

参数指的是Parameter, 全称 formal parameter ,简称“形参”。形参会参与构成方法的算法逻辑。跑龙套,在形式上,让算法能够通过编译。

Parameter是一种变量,C#有7种变量,其中有三种是参数(值参数,引用参数和输出参数)

方法体

1)语句

可以是语句块,

也可以 甚至只有一个分号 ";",说明它的算法还没有实现,被成为抽象方法。

2)返回值

void不需要返回值,其他要return

刘铁猛C#(8)方法的定义、调用与调试(上)_第6张图片

方法的调用

在方法名后跟上一对圆括号,在圆括号内写入必要的实际参数(argument)。

只有在方法后面加了圆括号,才算是调用了这个方法。

形参用于声明变量,实参意味着调用这个方法时的真实条件。实参必须和方法定义中的形参一致(数量一致,类型一致)

静态方法和实例方法

所有非静态方法都是实例方法。//public的实例方法,可以用 “方法实例+“.”" 来调用

刘铁猛C#(8)方法的定义、调用与调试(上)_第7张图片

静态方法隶属于类,跟类是绑定的。

public static 的静态方法,必须要用 “类+“.”" 来调用

刘铁猛C#(8)方法的定义、调用与调试(上)_第8张图片
刘铁猛C#(8)方法的定义、调用与调试(上)_第9张图片

你可能感兴趣的:(刘铁猛C#(8)方法的定义、调用与调试(上))