【C#学习】--方法

.1 静态方法

.1.1 特点:

生命周期:自创建开始到整个应用程序结束而结束

作用域:全局

效率高

.1.2 应用:

用户登录信息、系统配置信息、系统设置、SQLHelper

.1.3 注意事项:

带有“静态”前缀的一旦数量变多就会大量占用内存,非必要情况下不要创建静态对象

.1.4 调用:

我们在静态函数中调用某个方法时,

如果调用的是非静态方法,则需要在调用时先将该类实例化一个对象(或者说把该类初始化),再通过对象调用该方法——间接调用;

而调用静态方法则无需实例化对象,直接通过方法所属类调用即可——直接调用;

如果调用者和被调用者都定义在同一个类下,直接调用该方法即可。

.2 构造方法

.2.1 特点:

就像名字一样,有什么需要就怎么去构造,方法就像个橡皮泥,想捏什么就怎么捏,突出一个“自定义”

.2.2 应用

初始化对象

(定义一个对象包含哪些属性字段,这下字段分别又是什么数据类型;创建对象的意义:计算机实现对数据的读写前提是在内存中有相应的数据,通过初始化我们才可以在内存中为该数据开辟一个专属空间),

或者初始化一些数据

.2.3 注意事项:

构造方法默认为一个无参方法

可以自定义达到多个参数、方法重载的需要

.3 析构方法(了解)

.3.1 特点:

一般被GC垃圾回收器调用来释放对象,相比较构造方法是在创建时调用,析构方法是在程序结束时调用

.3.2 应用:

释放对象

.3.3 补充:垃圾回收机制

垃圾回收机制就是在程序结束时对运行中调用的资源进行处理,防止程序结束后对内存仍存在不必要的占用

这些资源分为托管资源和非托管资源两种

托管资源即不需要我们去管理,用完系统自动回收(这部分资源由我们拜托计算机自己来管理了);而非托管资源则需要我们手动处理后续

非托管资源包含:

Windows窗口句柄、数据库链接、GDI对象、独占文件锁等对象

Context,ApplicationContext,Brush,Component,ComponentDesigner,Container,Cursor

FileStream,Font,Icon,Image,Matrix,Object,OdbcDataReader,OleDBDataReader,Pen

Regex,Socket,StreamWriter,Tooltip等

.3.4 调用:

方式1 语法糖

 方式2 经典方法

.4 虚方法(修饰符 virtual)与重写方法(修饰符 override,注意不是overload,overload是重载,允许同名方法有多种参数列表类型)

.4.1 特点:

在不改动原始方法的情况下实现新的功能;

维护方便(想用基类的原始方法就直接继承,想用新功能就重写)

.4.2 应用:

允许子类(派生类)对从父类(基类)中继承的方法进行重写,从而实现同名方法但不同的功能

.4.3 实现:

 

未用virtual修饰的常规方法,这里用面向整数的加法举例

 

 用virtual修饰后,在子类中override重写从父类中继承来的同名方法(从而实现同名但不同功能,如果只需要继承原本功能就不需要重写)

.5 抽象方法(修饰符 abstract)

.5.1 特点:

必须在抽象类里声明;

不带方法体(因此没有具体功能,只规定了包含参数列表和返回值类型的函数签名);”画饼“

抽象类中声明的抽象方法无法直接被实例化(new不了),后续调用时实例化乃至实现的方法都是在子类中重写的具体方法

.5.2 应用:

强制性、必须实现的需求场景

.5.3 实现:

注意,跟前面的方法调用前先实例化对象有所区别,在调用抽象类下子类的方法时,不需要也无法对抽象类进行实例化,直接对子类进行实例化

.5.4 补充:与接口的区分

接口的实现:

看上去好像接口和抽象类非常接近,但仍需做好对各自使用场合的区分:

区别1:

抽象类,属于类,向上单继承(即只会有一个父类)

接口可以多继承

因此在上面的接口示例中可以通过再声明其他三个接口,一次性继承四个接口来实现加减乘除

继承四个接口的接口子类

调用

 

区别2:

虚方法、普通方法在抽象类中可以声明,在接口中只能声明规范,具体的实现不能写

在抽象类中

在接口中

综上,抽象类和接口各自的应用场合:

抽象类适用于常用的、不经常改动的、抽象性较强的事件(人的性别)

接口适用于改动性比较频繁、规范性质明显的事件(人的行为动作),一旦调用就必须实现接口否则会报错

.7 扩展方法

.7.1 特点:

在非泛型的静态类中定义的静态方法

.7.2 应用:

开发中第三方密封类没有源码的情况下开发者无法使用继承,而原有功能又无法实现需求时,可以同过扩展实现需求;

扩展接口;

LINQ链式编程

.7.3 实现

应用1

应用2

 

 

 

 

 

 

 

 

 

 这种途径相当于,建立了一个自己的方法库(包含了接口本身的方法和扩展类里我们新建的方法),以接口作为中介达到对库内的方法进行按需调用

 

posted @ 2023-04-03 20:22  90Red  阅读(55)  评论(0编辑  收藏  举报