C# 面向对象技术

简介:

一.基础知识

类:

封装的好处:良好的封装能够减少耦合;类内部的实现可以自由地修改;类具有清晰的对外接口。

类是C#中的一种结构,用于在程序中模拟现实生活的对象;

成员变量表示对象的特征;

方法表示对象可执行的操作;

如果类中未定义构造函数,则由运行库提供默认构造函数;

析构函数不能重载,并且每个类只能有一个析构函数;

可以根据不同数量的参数或不同数据类型参数对方法进行重载,不能根据返回值进行方法重载;

命名空间用来界定类所属的范围,类似于Java中的包。


特征:

继承是获得现有类的功能的过程;

创建新类所根据的基础类称为基类或父类,新建的类则称为派生类或子类;

base关键字用于从派生类中访问基类成员;

override关键字用于修改方法、属性或索引器。new访问修饰符用于显式隐藏继承自基类的成员;

抽象类是指至少一个抽象成员(尚未实现的方法)的类,抽象类不能实现;

重写方法就是修改基类中方法的实现,virtual关键字用于 修改方法的声明;

显示接口实现是用于在名称不明确的情况下确定成员函数实现的事哪一个接口。


高级:

错误和异常 

C#使用一种技术,即异常处理,为处理错误情况提供了一种机制,这就为每种错误情况提供了定制的处理方式,也把标识错误的代码与处理错的代码分离开来;

数据类型转换

如何隐式或显式地转换数据类型;

预处理

在编译代码时,第一部进行预处理,这样就可以在代码上进行文本替换了,也可以生成不同的程序,以满足不同情况的需要;

不安全代码

C#通常会陷藏内存访问的细节,简化代码的处理,但有一些情况需要直接访问内存。C#允许把标记的代码声明为不安全的代码,直接访问内存。


名词解释:

运算符重载

可以对类的实例进行加、减、乘、除等操作;

索引符

它允许在语法上按照数组来处理,并简化包含许多对象的类的使用;

委托

C#允许代码引用一个方法,而这样无需指定引用什么方法,可以在运行时再指定,委托就是这样一种方式,类似于C++中函数指针,但是它们是类型安全的和面向对象的;

事件

在编程时,通常需要告诉一些代码什么进修执行某个操作,例如用户什么时候单击了鼠标按钮。C#使用事件为这种场合提供;额内置支持。

this关键字

this 是一个保留字,仅限于构造函数和方法成员中使用

在类的构造函数中出现表示对正在构造的对象本身的引用,在类的方法中出现表示对调用该方法的对象的引用,在结构的构造上函数中出现表示对正在构造的结构的引用,在结构的方法中出现表示对调用该方法的结果的引用

this 保留字不能用于静态成员的实现里,因为这时对象或结构并未实例化

在 C# 系统中,this 实际上是一个常量,所以不能使用this++ 这样的运算

this 保留字一般用于限定同名的隐藏成员、将对象本身做为参数、声明索引访问器、判断传入参数的对象是否为本身

二.学习历程

在学习C#的过程中,可谓是:很心酸!感觉虽说是学习过相关的知识语言,可依然感觉好难懂。先画出一幅图,描述一下历程吧。

在学习的时候仍感觉这个语言有点儿很不同,自己能力还不及,还需努力呀!


                                                                 


三.对比成长

1.类和结构的区别?

类:

类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存

类有构造和析构函数

类可以继承和被继承

结构:

结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。

结构没有构造函数,但可以添加。结构没有析构函数

结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口


2.接口的多继承会带来哪些问题?

C# 中的接口与类不同,可以使用多继承,即一个子接口可以有多个父接口。但如果两个父成员具有同名的成员,就产生了二义性(这也正是C# 中类取消了多继承的原因之一),这时在实现时最好使用显式的声明


3.抽象类和接口的区别?

抽象类(abstract class)可以包含功能定义和实现,接口(interface)只能包含功能定义

抽象类是从一系列相关对象中抽象出来的概念,因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定,因此反映的是事物的外部特性

分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是什么”

为外部提供调用或功能需要扩充时优先使用接口


4.什么是反射?

反射,Reflection,通过它我们可以在运行时获得各种信息,如程序集、模块、类型、字段、属性、方法和事件

通过对类型动态实例化后,还可以对其执行操作

简单来说就是用string可以在runtime为所欲为的东西,实际上就是一个.netframework内建的万能工厂

一般用于插件式框架程序和设计模式的实现,当然反射是一种手段可以充分发挥其能量来完成你想做的任何事情(前面好象见过一位高人用反射调用一个官方类库中未说明的函数。)


5.什么是委托、委托链?

委托(delegate)是一种引用类型,我们在处理他的时候要当作类来看待而不是方法,说白了委托就是对方法或者方法列表的引用,调用一个委托实例就好像是调用c++中的指针一样,他封装了对制定方法的引用,或者说委托起到的是桥梁的作用,实例后的委托对象会将给定的参数传递给他所回调的方法,并去执行方法。

委托链我们知道委托是对方法的封装,而且委托可以封装很多方法形成委托链,其实委托就好像是一个容器,他封装了我们想要实现的若干方法,当调用委托对象(相当于c++中的指针)时,就会顺序的执行它所封装的所有的方法,如果有返回值的话,往往返回的是最后一个被执行的方法的返回值,委托链的形成可以用"+="或"-="对不同的委托实例进行二元操作。











目录
相关文章
|
6月前
|
人工智能 运维 算法
基于 C# 深度优先搜索算法的局域网集中管理软件技术剖析
现代化办公环境中,局域网集中管理软件是保障企业网络高效运行、实现资源合理分配以及强化信息安全管控的核心工具。此类软件需应对复杂的网络拓扑结构、海量的设备信息及多样化的用户操作,而数据结构与算法正是支撑其强大功能的基石。本文将深入剖析深度优先搜索(Depth-First Search,DFS)算法,并结合 C# 语言特性,详细阐述其在局域网集中管理软件中的应用与实现。
132 3
|
7月前
|
缓存 监控 算法
基于 C# 网络套接字算法的局域网实时监控技术探究
在数字化办公与网络安全需求增长的背景下,局域网实时监控成为企业管理和安全防护的关键。本文介绍C#网络套接字算法在局域网实时监控中的应用,涵盖套接字创建、绑定监听、连接建立和数据传输等操作,并通过代码示例展示其实现方式。服务端和客户端通过套接字进行屏幕截图等数据的实时传输,保障网络稳定与信息安全。同时,文章探讨了算法的优缺点及优化方向,如异步编程、数据压缩与缓存、错误处理与重传机制,以提升系统性能。
130 2
|
6月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
201 0
|
9月前
|
Web App开发 Linux C#
C# 网页截图全攻略:三种技术与 Chrome 路径查找指南
本文主要介绍了在 C# 中实现网页截图的几种技术及相关要点。涵盖了 PuppeteerSharp、Selenium 和 HtmlToImage 三种方式,分别阐述了它们的安装步骤及核心代码。同时,针对在 C# 中寻找 Windows 上 chrome.exe 路径这一问题,分析了未安装 Google Chrome 和已安装两种情况下的查找原因,并给出了相关参考链接,还列举了一系列与 C# 使用 Selenium、获取 chrome.exe 路径以及在 Linux 上部署相关的参考资料。
296 11
|
10月前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
137 6
|
10月前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
131 6
|
10月前
|
程序员 C# 数据库
C# 比较对象新思路,利用反射技术打造更灵活的比较工具
中途接手的项目,碰到需要在更新对象信息时比较并记录差异的需求,最变态的还有附加要求,怎么办?有没有既能满足需求又能对项目影响最小的方法呢?分享这个我封装的方法,一个利用反射技术打造的更灵活的比较工具
135 5
|
11月前
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
120 3
|
12月前
|
人工智能 开发框架 Cloud Native
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
136 1
|
11月前
|
人工智能 开发框架 安全
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
113 0

热门文章

最新文章