随笔分类 -  阅读笔记 / C#

摘要:第3章 命名准则 3.1 大小写约定 3.1.1 标识符的大小写规则 ​DO​: 命名空间 、 类型 、 成员 和 泛型参数 ,使用 PascalCasing 风格命名。 ‍ ​DO​​:参数,使用 camelCasing 风格命名。 ‍ 标识符 大小写 示例 命名空间 Pacal namespac 阅读全文
posted @ 2025-01-08 23:34 hihaojie 阅读(140) 评论(0) 推荐(0)
摘要:第2章 框架设计基础 2.1 前言 ​DO​:框架应功能强大又易于使用。 框架中 20% 的内容是常用的,这部分值得我们投入主要精力;80% 是不常用的,但仍要实现它,尽管设计的繁杂、不那么完美。 ‍ ​DO​:要从 使用者 的角度出发设计框架。 不同的程序员(VB、C++、C#)编程风格不同、需求 阅读全文
posted @ 2025-01-08 23:33 hihaojie 阅读(56) 评论(0) 推荐(0)
摘要:第1章 导论 精心设计的框架所具备的品质: 简单的 框架设计的出发点应该是符合使用者直觉的、简单易用的。如果觉得当前功能过于复杂,最好的办法是把该功能从当前的发布版本中移除,在下一次发布前花更多时间去做正确的设计。 ‍ 设计代价高 框架的API应该单独花时间精心设计,而非一边实现一边设计。它不应该是 阅读全文
posted @ 2025-01-08 23:29 hihaojie 阅读(19) 评论(0) 推荐(0)
摘要:第23章 并行编程 23.1 选择 PFX 的原因 服务器应用发挥多核心的优势十分容易(服务器应用可以通过每一个线程独立处理客户端的请求)。桌面程序发挥多核优势则比较困难了,我们通常需要对计算密集型的代码进行如下的处理: 将代码划分为多个小块; 通过多线程并行执行这些小块代码; 以线程安全和高效的方 阅读全文
posted @ 2025-01-06 22:58 hihaojie 阅读(53) 评论(0) 推荐(0)
摘要:第22章 高级线程处理 22.1 同步概述 多线程我们常需要一些同步结构进行线程间通讯。同步结构可以分为三类: 互斥锁 一次只允许一个线程执行特定的活动或一段代码。主要目的是令线程访问共享的写状态而不互相影响。互斥锁包括 lock​、Mutex​ 和 SpinLock​。 2. 非互斥锁 实现了有限 阅读全文
posted @ 2025-01-06 22:56 hihaojie 阅读(67) 评论(0) 推荐(0)
摘要:第18章 程序集 概述 程序集是 .NET 中的基本 部署 单元,也是所有 类型 的容器。 程序集包含: 已编译的 类型 IL(中间语言) 代码 运行时 资源 用于版本控制、安全及其他程序集的引用信息 定义了类型解析和安全许可的边界 一般来说,一个程序集包含单个的 Windows 可移植执行文件(W 阅读全文
posted @ 2025-01-01 18:17 hihaojie 阅读(110) 评论(0) 推荐(0)
摘要:第17章 序列化 17.1 序列化概念 序列化和反序列化通常用于: 通过网络或程序边界传输对象 在文件或者数据库中保存对象 深拷贝 17.1.1 序列化引擎 下表列出了 .NET Framework 支持的 4 种序列化机制: C7.0 核心技术指南 第7版.pdf - p737 - C7.0 核心 阅读全文
posted @ 2025-01-01 18:16 hihaojie 阅读(45) 评论(0) 推荐(0)
摘要:第16章 网络 纲要 .NET Framework 在 System.Net.*命名空间中包含了支持各种网络标准的类,支持的标准包括 HTTP、TCP/IP 以及 FTP 等。以下列出了其中的主要组件: ​Webclient​ 类 支持通过 HTTP 或者 FTP 执行简单的下载/上传操作。 ​We 阅读全文
posted @ 2025-01-01 18:14 hihaojie 阅读(90) 评论(0) 推荐(0)
摘要:第15章 流与IO 15.1 .NET 流的架构 .NET 流的架构主要包含三个概念:** 后台存储 、 装饰器 以及 流适配器 **,如图所示: C7.0 核心技术指南 第7版.pdf - p655 - C7.0 核心技术指南 第 7 版-P655-20240216192328 ​​ 其中** 后 阅读全文
posted @ 2025-01-01 18:11 hihaojie 阅读(50) 评论(0) 推荐(0)
摘要:第14章 并发与异步 14.2 线程 进 程提供了程序执行的独立环境, 进 程持有 线 程,且至少持有一个 线 程。这些 线 程共享 进 程提供的执行环境。 14.2.1 创建线程 创建线程的步骤为: 实例化 ​Thread​ ​ 对象,通过构造函数传入 ​ThreadStart​ ​ 委托。 调用 阅读全文
posted @ 2025-01-01 18:09 hihaojie 阅读(62) 评论(0) 推荐(1)
摘要:第13章 诊断 13.1 条件编译 预编译的指令见 4.16 预处理指令,我们这里的条件编译用到的指令有: ​#if​​、#else​​、#endif​​、#elif​​ 条件编译指令可以进行 与 ​&&​ ​、 或 ​||​ ​、 非 ​!​ 运算。 预定义指令可以通过三种方式定义: 在文件中通过 阅读全文
posted @ 2025-01-01 18:07 hihaojie 阅读(54) 评论(0) 推荐(0)
摘要:第12章 对象销毁与垃圾回收 销毁(disposal),指文件、锁、操作系统句柄和非托管对象的释放,相应的功能由 IDisposable 提供;垃圾回收,指托管内存不再使用后的定期回收,由 CLR 执行。 销毁通常是显式调用的;垃圾回收是自动执行的。 12.1 IDisposable​ 接口、Dis 阅读全文
posted @ 2025-01-01 18:05 hihaojie 阅读(75) 评论(0) 推荐(0)
摘要:第11章 其他 XML 技术 概述 System.Xml 命名空间由以下命名空间和核心类型构成: ​System.Xml.*​ ​XmlReader​ 和 XmlWriter​:高性能、前向读写的 XML 流 ​XmlDocument​:基于 W3C 标准 DOM(已过时)的 XML 文档 ​Sys 阅读全文
posted @ 2025-01-01 18:04 hihaojie 阅读(35) 评论(0) 推荐(0)
摘要:第10章 LINQ to XML 10.1 架构概述——DOM 和 LINQ to XML 的 DOM XML 文档可以用一棵对象树完整的表示,这称为“文档对象模型(document object model)” LINQ to XML 由两部分组成: XML DOM,简称为 X-DOM 大约 10 阅读全文
posted @ 2024-12-29 23:39 hihaojie 阅读(66) 评论(0) 推荐(0)
摘要:第9章 LINQ 运算符 本章所有例子所使用的 names 数组都是一致的: string[] names = {"Tom", "Dick", "Harry", "Marry", "Jay" }; 9.1 概述 标准查询运算符分三类: 输入是序列(IEnumerable​),输出是序列(IEnume 阅读全文
posted @ 2024-12-29 23:38 hihaojie 阅读(52) 评论(0) 推荐(0)
摘要:第8章 LINQ 查询 8.2 流式语法 8.2.2 使用 Lambda 表达式 常用运算符 Where() 筛选器 Order() 排序器 Select() 映射器 Take() 获取前 x 个元素 Skip() 跳过前 x 个元素 Reverse() 反转所有元素 First() 获取第一个元素 阅读全文
posted @ 2024-12-29 23:35 hihaojie 阅读(50) 评论(0) 推荐(0)
摘要:第7章 集合 7.1 枚举 下图展示了部分集合接口: ​​ 7.1.1 IEnumerable​​ 和 IEnumerator​​ ​IEnumerator​ 声明如下: public interface IEnumerator { object Current { get; } bool Move 阅读全文
posted @ 2024-12-29 23:31 hihaojie 阅读(37) 评论(0) 推荐(0)
摘要:第6章 框架基础 6.1 字符串与文本处理 6.1.1 字符 C#中 char​ ​代表一个 Unicode 字符。char​ ​是 System.Char​ ​的别名,System.Char​ 定义了一系列静态方法对字符进行处理: C7.0 核心技术指南 第7版.pdf - p267 - C7.0 阅读全文
posted @ 2024-12-29 23:29 hihaojie 阅读(65) 评论(0) 推荐(1)
摘要:第5章 框架概述 5.3 应用技术 5.3.1 用户界面 API 基于用户界面的应用程序可以划分为两类: 瘦客户端 网站等。.NET 提供了 ASP.NET、ASP.NET Core。 富客户端 本地 App。.NET 提供了 WPF、WindowsForms、Xamarin、UWP。 5.3.1. 阅读全文
posted @ 2024-12-29 23:27 hihaojie 阅读(25) 评论(0) 推荐(0)
摘要:第4章 C#的高级特性 4.1 委托 4.1.2 多播委托 对值为 null 的委托变量进行 + ​或 += ​操作,等价于为变量指定一个新值: SomeDelegate d = null; d += SomeMethod1; // 等价于 d = SomeMethod1 委托是 不可变 的,因此调 阅读全文
posted @ 2024-12-21 23:22 hihaojie 阅读(160) 评论(0) 推荐(0)