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

摘要:第14章 C#7 的代码简洁之道 14.1 局部方法 在任何有若干语句出现的位置,都可以使用局部方法:方法、构造器、属性、索引器、事件访问器、终结器、匿名函数中甚至另一个嵌套的局部方法中。 局部方法和普通方法的声明方法基本一致,但有如下限制条件: 不能有访问修饰符(public、private 等) 阅读全文
posted @ 2025-04-17 23:05 hihaojie 阅读(41) 评论(0) 推荐(0)
摘要:第13章 引用传递提升执行效率 13.2 ref 局部变量和 ref return 13.2.1 ref 局部变量 在 C#7 之前,ref 仅用于方法参数;自 C#7 开始,ref 可以创建局部变量!它的用法如下: int x = 10; ref int y = ref x; x++; y++; 阅读全文
posted @ 2025-04-16 23:35 hihaojie 阅读(45) 评论(0) 推荐(0)
摘要:第12章 分解与模式匹配 12.1 分解元组 分解元组,即将元组的元素分解、复制给其他变量。下面是一个元组分解的示例: var tuple = (10, "text"); // 创建一个元组类型 (int, string) var (a, b) = tuple; // 隐式地将元组分解到两个新变量 阅读全文
posted @ 2025-04-13 23:02 hihaojie 阅读(11) 评论(0) 推荐(0)
摘要:第11章 使用元组进行组合 11.2 元组字面量和元组类型 元组看作 CLR 引入的一些新类型,然后提供了相应的语法糖,使得新类型更易用。 易用包括两个层面:声明和构建。 11.2.1 语法 C#7 引入了两点新语法: 元组字面量:每个元素都有一个 值 和一个可选名称 下图表示的是一个 元组实例 ​ 阅读全文
posted @ 2025-04-10 23:00 hihaojie 阅读(29) 评论(0) 推荐(0)
摘要:第10章 简洁代码的特性“盛宴” 10.1 using static 指令 10.1.1 引入静态成员 using static 指令可以简化 静态 方法的调用。 使用该指令后,以下几种成员可以通过名称直接引用,无需附带类型名: 静态字段和属性。 静态方法。 枚举值。 嵌套类型。 如下两段代码等价, 阅读全文
posted @ 2025-04-09 22:34 hihaojie 阅读(34) 评论(0) 推荐(0)
摘要:第9章 字符串特性 9.1 .NET 中的字符串格式化回顾 Info 相关内容请参考第6章 框架基础 9.1.1 简单字符串格式化 下面是使用格式化字符串的一个简单例子: // C#5 的旧格式化代码 Console.Write("What's your name? "); string name 阅读全文
posted @ 2025-04-08 22:58 hihaojie 阅读(50) 评论(0) 推荐(1)
摘要:第8章 极简属性和表达式主体成员 8.1 属性简史 C# 的属性随着语言的发展,其功能、语法也变得多样化。下面是它的演化: C#1:支持最基础的属性写法; public sealed class Point { private double x, y; public double X { get { 阅读全文
posted @ 2025-04-06 23:19 hihaojie 阅读(37) 评论(0) 推荐(0)
摘要:第7章 C#5 附加特性 7.1 在 foreach 循环中捕获变量 在 C#5 之前,根据语言规范中对 foreach 循环的描述,每个 foreach 循环都只会声明一个迭代变量,该变量在原始代码中是只读的,但之后每次迭代都会赋一个新值。即如下两段代码等价: foreach (string na 阅读全文
posted @ 2025-04-02 21:44 hihaojie 阅读(37) 评论(0) 推荐(0)
摘要:第6章 异步原理 6.1 生成代码的结构 异步模式的实现原理是基于 状态机 的,它负责追踪 async 方法当前的执行进度。从逻辑上讲,可以分为以下 4 种状态: 未启动 正在执行 暂停 完成(成功或 faulted) Eureka 这里的“暂停”,指程序运行至 await 处,任务未完成时,当前方 阅读全文
posted @ 2025-04-01 08:57 hihaojie 阅读(36) 评论(0) 推荐(0)
摘要:第5章 编写异步代码 5.1 异步函数简介 C# 5 引入了异步函数的概念。异步函数可以指某个由 async 修饰符修饰的方法或者匿名函数,它可以对 await 表达式使用 await 运算符。 5.2 对异步模式的思考 5.2.1 关于异步执行本质的思考 await 在 C#中的任务本质上是请求编 阅读全文
posted @ 2025-03-31 22:53 hihaojie 阅读(128) 评论(0) 推荐(0)
摘要:第4章 C#4:互操作性提升 4.1 动态类型 4.1.1 动态类型介绍 我们在第 3 章有提到:在特定上下文中查找符号含义的过程称为 绑定 。 动态类型:绑定过程从编译时转移到了 执行 期; 此时编译器生成的 IL 代码的功能是执行绑定并执行绑定的结果。这一切都是由 ​dynamic​ ​ 关键字 阅读全文
posted @ 2025-03-30 15:04 hihaojie 阅读(54) 评论(0) 推荐(0)
摘要:第3章 C#3:LINQ 及相关特性 3.1 自动实现的属性 C#3 增加了自动属性,由编译器负责实现原先的访问器部分(编译器会自动创建后台字段)。试比较如下两段代码: // C#3 之前 private string name; public string Name { get { return 阅读全文
posted @ 2025-03-29 09:21 hihaojie 阅读(20) 评论(0) 推荐(0)
摘要:第2章 C#2 2.1 泛型 2.1.1 示例:泛型诞生前的集合 在泛型诞生之前(.NET1),开发者常用如下方式创建集合: 数组 普通对象集合 如 ArrayList​、Hashtable​ 专用类型集合 如 StringCollection​ // 数组 static string[] Gene 阅读全文
posted @ 2025-03-27 22:59 hihaojie 阅读(47) 评论(0) 推荐(0)
摘要:第9章 常用的设计模式 9.1 聚合组件(aggregate component) 聚合组件将多个 底层 类型集中到一个 简化的高层 类型中,用于支持常用场景。例如,E-mail 组件,把简单邮件传输协议(SMTP)、套接字、编码(encoding)等等集中在一起。 聚合组件的目的是提供一个 更高层 阅读全文
posted @ 2025-01-14 23:21 hihaojie 阅读(53) 评论(0) 推荐(0)
摘要:8.10 序列化(第二版) .NET框架提供了三种主要的序列化技术,如下: 数据协定(Data Contract) 序列化; XML 序列化; 运行时 序列化(二进制和SOAP) ​​ ​DO​:在设计新的类型时考虑到序列化。 如果类型实例需要持久化,或需要传输,则设计时要考虑如何序列化。 1 选择 阅读全文
posted @ 2025-01-13 23:19 hihaojie 阅读(23) 评论(0) 推荐(0)
摘要:第8章 使用准则 8.1 数组 ​DO​​​:公共 API 中 优先 使用集合, 避免 使用数组。 public class Order { public Collection<OrderItem> Items { get { ... } } ... } ‍ ​ ​DON'T​ ​: 不要 使用 r 阅读全文
posted @ 2025-01-13 23:13 hihaojie 阅读(40) 评论(0) 推荐(0)
摘要:第7章 异常 7.1 抛出异常 ​DO​​​:操作失败应该通过 抛出异常 的方式报告,而非通过 返回错误码 。 ‍ ​CONSIDER​:在代码遇到严重问题且无法继续安全地执行时,要调用 ​System.Enviroment.FailFast​ ​ 终止进程,而不是抛出异常。 该方法会向 Windo 阅读全文
posted @ 2025-01-11 23:06 hihaojie 阅读(58) 评论(0) 推荐(0)
摘要:第6章 扩展性设计 6.1 扩展机制 6.1.1 非密封类 ​ ​CONSIDER​ ​​: 考虑 用非密封类(且不包含任何虚成员、受保护成员)为框架提供扩展性。 这种类提供的扩展性广受用户欢迎,且开销不高。 6.1.2 受保护的成员 ​CONSIDER​​:受保护的成员用于 高级 的定制方案。 用 阅读全文
posted @ 2025-01-10 23:21 hihaojie 阅读(32) 评论(0) 推荐(0)
摘要:第5章 成员设计 5.1 成员设计的通用规范 5.1.1 成员重载 形参要求: ​DO​:在较长的重载中,应使用 描述 性的参数名来说明较短的重载使用的默认值。 以如下代码举例,ignoreCase 暗示“短重载大小写敏感”,如果参数名改为 caseSensitive,将不会隐含该含义。 publi 阅读全文
posted @ 2025-01-09 22:39 hihaojie 阅读(22) 评论(0) 推荐(0)
摘要:第4章 类型设计准则 ​DO​:类应该由一组定义明确、相互关联的成员组成。 一个类,如果能用一句话描述清楚它的用途,那么它的设计是优秀的。 4.1 类型(class、struct)和 namespace ​DO​:namespace 用于组织类,通过 namespace 将相关功能按层次铺开,但不要 阅读全文
posted @ 2025-01-09 22:35 hihaojie 阅读(45) 评论(0) 推荐(0)