![](https://img-blog.csdnimg.cn/2fc2919dffbe459686a4b0c230fb3f40.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C# 图解教程 第5版
文章平均质量分 91
C# 图解教程 第5版 学习笔记,个人整理,简单的内容已省略。
适合有一定面向对象编程基础的人看~
蔗理苦
Hello, man
展开
-
C# 图解教程 第5版 —— 第16章 接口
接口是声明一组函数成员而不进行实现的引用类型,只能用类和结构来实现接口。使用 IComparable 接口的示例 Array 类的 Sort 方法依赖于 IComparable 接口,其声明在 BCL 中,只包含唯一的 CompareTo 方法。图 16.1 中灰色表示该方法目前未实现。图16.1 IComparable 接口负数:当前对象 < 参数对象。正数:当前对象 > 参数对象。0:两个对象相等。原创 2023-12-06 21:14:51 · 1220 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第25章 反射和特性
特性是一种允许向程序集添加元数据的语言结构,用于保存程序结构信息的特殊类型。将应用了特性的程序结构称为目标。设计用来获取和使用元数据的程序称为特性的消费者。.NET 预定义了许多特性,也可以自己声明自定义特性。图25.2 创建和使用特性的相关组件在源代码中将特性应用于程序结构。编译器获取源代码并从特性产生元数据,之后将元数据放到程序集中。消费者程序可以获取特性的元数据以及程序中其他组件的元数据。即,编译器同时生产和消费特性。原创 2024-01-14 15:12:55 · 1049 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第24章 预处理指令
C# 中没有实际的预处理程序,“预处理”指令由编译器处理,但这个术语被保留了下来。原创 2024-01-13 14:49:48 · 1237 阅读 · 2 评论 -
C# 图解教程 第5版 —— 第23章 异常
异常是程序中的运行时错误,它违反了系统约束或应用程序约束,或是正常操作时不会发生的状况。如果程序没有提供处理异常的代码,系统会挂起这个程序。例如,下面的代码在试图用 0 除一个数时抛出一个异常: 在没有异常处理程序的情况下,应用程序将停止(或者崩溃),并向用户显示非常不友好的错误消息。在有限的几种情况下采取纠正措施,让应用程序继续运行。记录有关异常的信息,以便开发团队可以解决该问题。清理任何外部资源,例如可能保持打开的数据库连接。向用户显示友好的信息。原创 2024-01-13 14:02:41 · 1192 阅读 · 2 评论 -
C# 图解教程 第5版 —— 第22章 命名空间和程序集
mscorlib 包含 C# 类型及大部分 .NET 语言基本类型的定义,在编译时,它必须被引用,因此不显示放在引用目录中。 若想扩展上述类的能力,使用名为 CircleWidget 的类,并将其定义在 UltraLib 的程序集中。 在许多项目中,会使用其他程序集的类或类型,而不仅仅是自己声明的。 由于两个库都含有名为 SquareWidget 的类,编译时会产生错误信息,因为编译器不知道使用 SquareWidget 类的哪个版本。“引用”,选择下方的“添加自”按钮,找到对应的程序集即可。原创 2024-01-12 19:51:44 · 1313 阅读 · 2 评论 -
C# 图解教程 第5版 —— 第21章 异步编程
启动程序时,系统会在内存中创建一个新的进程。在进程内部,系统创建了一个称为线程的内核对象,代表真正执行的程序(线程是“执行线程”的简称)。一旦进程建立,系统会在 Main 方法的第一行语句处开始线程的执行。进程是构成运行程序的资源集合,包括虚地址空间、文件句柄和运行程序所需的其他东西。默认情况下,一个进程只包含一个线程,从程序的开始一直执行到结束。线程可以派生其他线程,因此任意时刻,一个进程都可能包含不同状态的多个线程,执行程序的不同部分。同一个进程的多个线程共享进程的资源。原创 2024-01-12 10:40:05 · 687 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第19章 枚举器和迭代器
编译器得到有关枚举项的描述后,会构建包含所有需要的方法(MoveNext)和属性(Current)实现的枚举器类,产生的类被嵌套包含在声明迭代器的类中。 可枚举类是指实现了 IEnumerable 接口的类,该接口只有一个成员——GetEnumerator,返回对象的枚举器。 对于有枚举器的类型而言,我们使用 GetEnumerator 方法来获取其拥有的枚举器,实现该方法的类型称为。 迭代器块描述了希望编译器为我们创建的枚举器类的行为,其中的代码描述了如何枚举元素。或不实现,来让类不可枚举。原创 2023-12-18 16:16:50 · 1249 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第18章 泛型
泛型可以将重构代码并且额外添加一个抽象层,是专门为多段代码在不同的数据类型上执行相同指令而设计的。原创 2023-12-11 16:32:38 · 446 阅读 · 2 评论 -
C# 图解教程 第5版 —— 第17章 转换
转换是接受一个类型的值并将它用作另一个类型的等价值的过程。转换后的值应和原值一样,但其类型为目标类型。 可以为类和结构定义隐式和显式转换。需要 public 和 static 修饰符。implicit 和 explicit 分别表示隐式和显式转换。只可以为类和结构定义。不能重定义标准隐式或显式转换。对于源类型 S 和目标类型 T:S 和 T 类型不能相同。S 和 T 不能有继承关系。S 和 T 不能同时为接口或 object。原创 2023-12-07 13:55:30 · 262 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第15章 事件
以下示例展示发布者 Incrementer 和订阅者 Dozens 的使用,在 DoCount 方法中,每增加 12 个计数就触发 CountedADozen 事件。 发布者 / 订阅者模式:发布者定义了一系列事件,订阅者可以通过向发布者提供一个方法来“注册”以获取通知。 和委托类似,如果一个处理程序在事件内注册了多次,移除时只移除列表最后一个。图15.8 包含发布者和订阅者的完整程序,展示了使用事件所必须的 5 个部分。 当事件发生时,发布者“触发事件”,然后执行订阅者提交的所有方法。原创 2023-11-16 23:35:51 · 476 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第14章 委托
委托会执行它所“持有”的方法,可以看成是类型安全、面向对象的 C++ 函数指针。类是数据和方法的集合。委托持有一个或多个方法。 委托类型的声明和方法类似,只是没有实现块。图14.1 与类相似,委托是用户定义的引用类型 可以将 delegate 看作一个包含有序方法列表的对象,这些方法具有相同的签名和返回类型。方法的列表称为调用列表。方法可以来自任何类或结构,只要满足如下的匹配:委托的返回类型。委托的签名(包含 ref 和 out)。方法可以是实例方法或者静态方法。原创 2023-11-02 13:40:53 · 378 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第13章 数组
元素:数组的独立数据项。秩/维度:数组的维度数称作秩。维度长度:每个维度方向的位置个数。数组长度:所有维度中的元素总数。原创 2023-10-29 23:58:16 · 481 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第12章 枚举
尽管枚举类型不能有重复的名称,但可以有重复的值。图12.6 标志位的定义(左)和各自代表的值(右)图12.8 使用 HasFlag 方法检查标志位。选取足够长度的无符号类型作为枚举底层类型。图12.11 无 Flags 特性的输出。图12.12 有 Flags 特性的输出。图12.7 使用按位或运算设置标志位。图12.9 使用按位与运算检查标志位。图12.4 成员赋值的法则与示例。方法检查是否设置了特定标志位。图12.5 位标志的枚举声明。图12.3 等价的枚举声明。图12.2 设置底层类型。原创 2023-10-28 16:50:36 · 286 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第11章 结构
类是引用类型,结构是值类型。结构是隐式密封的,不能派生。原创 2023-10-28 15:49:30 · 330 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第10章 语句
表达式返回值有副作用,对许多表达式求值只是为了它们的副作用。x = 10;该表达式将 10 赋给 x,虽然这可能是语句的主要动机,但却归类为副作用。设置 x 值后,表达式返回 x 的新值 10,但这个结果被忽略了。原创 2023-10-28 15:08:48 · 645 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第9章 表达式和运算符
隐式转换 使用 public 和 static 修饰符,implicit 表明为隐式转换:图9.7 定义隐式转换显示转换 和隐式转换一样,但使用 explicit 而不是 implicit。图 9.8 使用箭头标出了不同之处:图9.8 定义显示转换。原创 2023-10-26 23:32:58 · 247 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第8章 类和继承
图8.26 公有类的受保护内部成员对相同程序集的类成员或继承该类的类成员可见,对其他程序集中且不继承该类的类不可见。 private 访问级别的限制是最严格的,只有自己或嵌套在自己内部的类才能访问类成员,其他所有类都不行。 使用类型转换运算符可以将派生类对象的引用转换为基类对象的引用,转换后的引用只能访问基类的成员。图8.24 公有类的受保护成员对它自己的类成员或派生类的成员可见,派生类甚至可以在其他程序集中。 public 访问级别的限制是最少的(几乎没有的),所有类都可以自由访问该成员。原创 2023-10-26 19:25:07 · 412 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第7章 深入理解类
索引器是一组 get 和 set 访问器,与属性类似。图7.10 索引器的表现形式。原创 2023-10-25 22:30:56 · 427 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第6章 方法
图6.12 参数类型语法使用总结。原创 2023-10-15 21:38:39 · 498 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第5章 类的基本概念
类是一种活动的数据结构,包含数据成员和函数成员。表5.1 类成员的类型。原创 2023-10-15 16:48:52 · 457 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第4章 类型、存储和变量
C# 中,数值类型不具有布尔意义。图4.1 预定义类型 所有预定义类型都直接映射到底层的 .NET 类型,C# 的类型名称就是 .NET 类型的别名。 应尽量使用 C# 类型名称而不是 .NET 类型名称。表4.1 预定义简单类型表4.2 预定义非简单类型类(class)结构(struct)数组(array)枚举(enum)委托(delegate)接口(interface)原创 2023-10-15 15:22:40 · 451 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第3章 C# 编程概述
表3.3 注释类型。原创 2023-10-15 01:08:31 · 626 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第2章 C# 和 .NET Core
.NET Core 可以指定安装的包,空间占用更小。这也意味着,每个程序都有自己的 .NET Core 副本,可以在不同时间升级不同的应用程序。 除了使用及时编译器 JIT 动态将中间代码 IL 转换为机器代码,.NET Core 应用程序还可以预编译为 Windows、Linux 或 macOS 上的本机代码,以提高程序性能。 .NET Core 1.0 于 2016 年 6 月发布,1.1 版本于 2017 年 3 月发布,2.0 版本于 2017 年 8 月发布,其发展速度十分之快。原创 2023-10-15 00:27:56 · 664 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第1章 C# 和 .NET 框架
微软公司提供的一个类库,以 C++ 类的形式封装了 Windows 的 API,并包含一个应用程序框架,以减少应用程序开发人员的工作量。一组 .NET 标准,将 .NET 框架的所有组件连接成一个内聚、一致的系统,详细说明了所有软件都必须遵守的规则和约定,如图 1.6 所示。.NET 框架提供庞大的基础类库(BCL),有时也称为 FCL(Framework Class Library,框架类库)。 CLR 是 .NET 框架的核心组件,位于操作系统的顶层,管理程序的执行,如图 1.5 所示。原创 2023-10-06 01:11:32 · 1962 阅读 · 1 评论