首页 > 编程语言 >【C#学习】--方法

【C#学习】--方法

时间:2023-04-03 20:35:34浏览次数:37  
标签:调用 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

 

 

 

 

 

 

 

 

 

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

 

标签:调用,C#,子类,接口,学习,--,对象,抽象类,方法
From: https://www.cnblogs.com/90Red/p/17282244.html

相关文章

  • eyoucms 获取单页内容的代码
    {eyou:typetypeid='你的栏目id'addtable='single_content'}{$field.content|html_msubstr=###,0,155}...{/eyou:type}(此标签过滤样式){eyou:typetypeid='你的栏目id'addtable='single_content'}{$field.content|getsubstr=###,0,420}........
  • 一种支持多用户的公平密文检索方案
    背景:用户在云服务器存储数据;问题:现有用户与云服务器交互方式多为一对一;用户支付费用后,得不到云服务器正确且完整的检索结果。方案:CP-ABE对属性私钥指定树形访问结构,实现密文数据的细粒度访问控制->结合SM4分组算法对数据集生成密文->依据区块链的公平机制及智能合约解决云服......
  • LINUX 放开端口,防火墙操作
    防火墙操作:查看防火墙状态systemctlstatusfirewalld、firewall-cmd--state暂时关闭防火墙systemctlstopfirewalld永久关闭防火墙(慎用)systemctldisablefirewalld开启防火墙systemctlstartfirewalld开放指定端口firewall-cmd--zone=public--add-port=8080/tcp--perman......
  • 从零开始USRP 02 一些基本的GNU Radio操作
    继续学习:https://blog.csdn.net/YOUNGAAAAA/article/details/128098154我们可以先简单创建一个USRP图:  但是这个图目前是跑不了的,因为:RuntimeError:LookupError:KeyError:Nodevicesfoundfor----->EmptyDeviceAddress>>>Done(returncode1)这里我暂时先不......
  • 实验一-密码引擎-3-加密API研究
    实验一-密码引擎-3-加密API研究密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用......
  • eyoucms 首页以及列表页内容调用标题、关键词、描述
    1、首页调用标题、关键词、描述<title>{eyou:globalname='web_title'/}</title><metaname="description"content="{eyou:globalname='web_description'/}"/><metaname="keywords"content="{eyou:g......
  • eyoucms 去掉 index.php后缀
    针对不同服务器、虚拟空间,运行PHP的环境也有所不同,目前主要分为:Nginx、apache、IIS以及其他服务器。下面分享如何去掉URL上的index.php字符,记得在管理后台清除缓存,对于一些ECS服务器可能要重启nginx等服务!【Nginx服务器】在原有的nginx重写文件里新增以下代码片段:location/......
  • 为什么 Python、Go 和 Rust 都不支持三元运算符?
    在编程时,我们经常要作条件判断,并根据条件的结果选择执行不同的语句块。在许多编程语言中,最常见的写法是三元运算符,但是,Python并不支持三元运算符,无独有偶,两个最热门的新兴语言Go和Rust也不支持!为什么Python不支持三元运算符呢?本文将主要分析Python在设计条件选择语法时......
  • picoctf2023
    ForensicsFIndAndOpen一个流量包和一个flagzip。流量包里面看到半截flag。base解码可以看到。然后用这半截作为密码打开zip。。。。。(这我是真sb,想不到PcapPosoning直接搜索hideme分离出图片中的压缩包就能看到MSB根据题目名字,一眼顶针。stegsolve提取出msb下的7bi......
  • 原型展示:基于深度学习的人脸识别会议签到系统
    电梯演讲:https://www.bilibili.com/video/BV1kc411W7w4?t=9.9原型:1,主界面  2,会议管理  3,人员管理  4,会议室管理 ......