C#10核心技术指南

C#10核心技术指南

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

系统讲解C# 10从基础知识到各种高级特性的命令、语法和用法。

内容简介

本书首先介绍C#和.NET,第2-4章详细介绍C#语言的语法、类型和变量。其余各章则涵盖.NET 6基础类库的功能,包括LINQ、XML、集合、并发、I/O和联网、内存管理、反射、动态编程、属性、加密和原生互操作性等主题。第5章和第6章是后续主题的基础,除这两章之外,其余各章可以根据需要按任意顺序阅读。

本书的讲解深入浅出,同时为每一个知识点都专门设计了贴切、简单、易懂的学习案例,从而可以帮助读者准确地理解知识点的含义并快速地学以致用。

作者简介

作者约瑟夫·阿坝哈瑞,是C# 8.0 Pocket Reference和LINQ Pocket Reference的作者。他还是流行的代码编辑执行和LINQ查询工具LINQPad的创作者。

章节目录

版权信息

O'Reilly Media,Inc. 介绍

译者序

前言

第1章 C#和.NET简介

1.1 面向对象

1.2 类型安全性

1.3 内存管理

1.4 平台支持

1.5 CLR、BCL和运行时

1.5.1 公共语言运行时

1.5.2 基础类库

1.5.3 运行时

1.5.4 小众运行时

1.6 C#简史

1.6.1 C# 10的新特性

1.6.2 C# 9.0的新特性

1.6.3 C# 8.0新特性

1.6.4 C# 7.x的新特性

1.6.5 C# 6.0新特性

1.6.6 C# 5.0新特性

1.6.7 C# 4.0新特性

1.6.8 C# 3.0新特性

1.6.9 C# 2.0新特性

第2章 C#语言基础

2.1 第一个C#程序

编译

2.2 语法

2.2.1 标识符和关键字

2.2.2 字面量、标点与运算符

2.2.3 注释

2.3 类型基础

2.3.1 预定义类型示例

2.3.2 自定义类型

2.3.3 类型和转换

2.3.4 值类型与引用类型

2.3.5 预定义类型分类

2.4 数值类型

2.4.1 数值字面量

2.4.2 数值转换

2.4.3 算术运算符

2.4.4 自增和自减运算符

2.4.5 特殊整数类型运算

2.4.6 8位和16位整数类型

2.4.7 特殊的float和double值

2.4.8 double和decimal的对比

2.4.9 实数的舍入误差

2.5 布尔类型和运算符

2.5.1 布尔类型转换

2.5.2 相等和比较运算符

2.5.3 条件运算符

2.6 字符串和字符

2.6.1 char转换

2.6.2 字符串类型

2.7 数组

2.7.1 默认数组元素初始化

2.7.2 索引和范围

2.7.3 多维数组

2.7.4 简化数组初始化表达式

2.7.5 边界检查

2.8 变量和参数

2.8.1 栈和堆

2.8.2 明确赋值

2.8.3 默认值

2.8.4 参数

2.8.5 引用局部变量

2.8.6 引用返回值

2.8.7 var隐式类型局部变量

2.8.8 目标类型new表达式

2.9 表达式和运算符

2.9.1 基础表达式

2.9.2 空表达式

2.9.3 赋值表达式

2.9.4 运算符优先级和结合性

2.9.5 运算符表

2.10 null运算符

2.10.1 null合并运算符

2.10.2 null合并赋值运算符

2.10.3 null条件运算符

2.11 语句

2.11.1 声明语句

2.11.2 表达式语句

2.11.3 选择语句

2.11.4 迭代语句

2.11.5 跳转语句

2.11.6 其他语句

2.12 命名空间

2.12.1 文件范围命名空间(C# 10)

2.12.2 using指令

2.12.3 global using指令(C# 10)

2.12.4 using static指令

2.12.5 命名空间中的规则

2.12.6 类型和命名空间别名

2.12.7 高级命名空间特性

第3章 在C#中创建类型

3.1 类

3.1.1 字段

3.1.2 常量

3.1.3 方法

3.1.4 实例构造器

3.1.5 解构器

3.1.6 对象初始化器

3.1.7 this引用

3.1.8 属性

3.1.9 索引器

3.1.10 静态构造器

3.1.11 静态类

3.1.12 终结器

3.1.13 分部类型和方法

3.1.14 nameof运算符

3.2 继承

3.2.1 多态

3.2.2 类型转换和引用转换

3.2.3 虚函数成员

3.2.4 抽象类和抽象成员

3.2.5 隐藏继承成员

3.2.6 密封函数和类

3.2.7 base关键字

3.2.8 构造器和继承

3.2.9 重载和解析

3.3 object类型

3.3.1 装箱和拆箱

3.3.2 静态和运行时类型检查

3.3.3 GetType方法和typeof运算符

3.3.4 ToString方法

3.3.5 object的成员列表

3.4 结构体

3.4.1 结构体的构造语义

3.4.2 只读结构体与只读函数

3.4.3 ref结构体

3.5 访问权限修饰符

3.5.1 示例

3.5.2 友元程序集

3.5.3 可访问性上限

3.5.4 访问权限修饰符的限制

3.6 接口

3.6.1 扩展接口

3.6.2 显式接口实现

3.6.3 用虚成员实现接口

3.6.4 在子类中重新实现接口

3.6.5 接口和装箱

3.6.6 默认接口成员

3.7 枚举类型

3.7.1 枚举类型转换

3.7.2 标志枚举类型

3.7.3 枚举运算符

3.7.4 类型安全问题

3.8 嵌套类型

3.9 泛型

3.9.1 泛型类型

3.9.2 为什么需要泛型

3.9.3 泛型方法

3.9.4 声明类型参数

3.9.5 typeof和未绑定泛型类型

3.9.6 泛型的默认值

3.9.7 泛型的约束

3.9.8 继承泛型类型

3.9.9 自引用泛型声明

3.9.10 静态数据

3.9.11 类型参数和转换

3.9.12 协变

3.9.13 逆变

3.9.14 C#泛型和C++模板对比

第4章 C#的高级特性

4.1 委托

4.1.1 用委托书写插件方法

4.1.2 实例方法目标与静态方法目标

4.1.3 多播委托

4.1.4 泛型委托类型

4.1.5 Func和Action委托

4.1.6 委托和接口

4.1.7 委托的兼容性

4.2 事件

4.2.1 标准事件模式

4.2.2 事件访问器

4.2.3 事件的修饰符

4.3 Lambda表达式

4.3.1 显式指定Lambda参数和返回值的类型

4.3.2 捕获外部变量

4.3.3 Lambda表达式和局部方法的对比

4.4 匿名方法

4.5 try语句和异常

4.5.1 catch子句

4.5.2 finally语句块

4.5.3 抛出异常

4.5.4 System.Exception的关键属性

4.5.5 常用的异常类型

4.5.6 TryXXX方法模式

4.5.7 异常的替代方式

4.6 枚举类型和迭代器

4.6.1 枚举类型

4.6.2 集合的初始化器

4.6.3 迭代器

4.6.4 迭代器语义

4.6.5 组合序列

4.7 可空值类型

4.7.1 Nullable结构体

4.7.2 隐式和显式的可空值类型转换

4.7.3 装箱拆箱可空值

4.7.4 运算符优先级提升

4.7.5 在bool?上使用&和|运算符

4.7.6 可空值类型和null运算符

4.7.7 可空值类型的应用场景

4.7.8 可空值类型的替代方案

4.8 可空引用类型

4.8.1 null包容运算符

4.8.2 隔离注解与警告上下文

4.8.3 将可空相关的警告视为错误

4.9 扩展方法

4.9.1 扩展方法链

4.9.2 二义性与解析

4.10 匿名类型

4.11 元组

4.11.1 元组元素命名

4.11.2 ValueTuple.Create

4.11.3 元组的解构

4.11.4 元组的比较

4.11.5 System.Tuple类

4.12 记录

4.12.1 记录产生的背景

4.12.2 定义记录

4.12.3 非破坏性更改

4.12.4 属性校验

4.12.5 计算字段与延迟评估

4.12.6 主构造器

4.12.7 记录与相等比较

4.13 模式

4.13.1 var模式

4.13.2 常量模式

4.13.3 关系模式

4.13.4 模式组合器

4.13.5 元组模式和位置模式

4.13.6 属性模式

4.14 特性

4.14.1 特性类

4.14.2 命名和位置特性参数

4.14.3 在程序集与支持字段上使用特性

4.14.4 在Lambda表达式上使用特性(C# 10)

4.14.5 指定多个特性

4.15 调用者信息特性

CallerArgumentExpression特性(C# 10)

4.16 动态绑定

4.16.1 静态绑定与动态绑定

4.16.2 自定义绑定

4.16.3 语言绑定

4.16.4 RuntimeBinderException

4.16.5 动态类型的运行时表示

4.16.6 动态转换

4.16.7 var与dynamic

4.16.8 动态表达式

4.16.9 无动态接收者的动态调用

4.16.10 动态表达式中的静态类型

4.16.11 不可调用的函数

4.17 运算符重载

4.17.1 运算符函数

4.17.2 重载等号和比较运算符

4.17.3 自定义隐式和显式转换

4.17.4 重载true和false

4.18 不安全的代码和指针

4.18.1 指针基础

4.18.2 不安全的代码

4.18.3 fixed语句

4.18.4 指针取成员运算符

4.18.5 stackalloc关键字

4.18.6 固定大小的缓冲区

4.18.7 void*

4.18.8 原生大小整数

4.18.9 函数指针

4.18.10 [SkipLocalsInit]特性

4.19 预处理指令

4.19.1 Conditional特性

4.19.2 pragma警告

4.20 XML文档

4.20.1 标准XML文档标签

4.20.2 用户自定义标签

4.20.3 类型交叉引用或成员交叉引用

第5章 .NET概述

5.1 .NET Standard

5.1.1 .NET Standard 2.0

5.1.2 .NET Standard 2.1

5.1.3 旧版本.NET Standard

5.1.4 .NET Framework和.NET 6的兼容性

5.2 运行时与C#语言的关系

5.3 引用程序集

5.4 CLR和BCL

5.4.1 系统类型

5.4.2 文本处理

5.4.3 集合

5.4.4 查询

5.4.5 XML和JSON

5.4.6 诊断

5.4.7 并发与异步

5.4.8 流与I/O

5.4.9 网络

5.4.10 程序集、反射和特性

5.4.11 动态编程

5.4.12 加密

5.4.13 高级线程功能

5.4.14 并行编程

5.4.15 Span和Memory

5.4.16 原生互操作性与COM互操作性

5.4.17 正则表达式

5.4.18 序列化

5.4.19 Roslyn编译器

5.5 应用程序层

5.5.1 ASP.NET Core

5.5.2 Windows桌面

5.5.3 UWP与WinUI3

5.5.4 MAUI

第6章 .NET基础

6.1 字符串与文本处理

6.1.1 char

6.1.2 字符串

6.1.3 字符串的比较

6.1.4 StringBuilder

6.1.5 文本编码和Unicode

6.2 日期和时间

6.2.1 TimeSpan

6.2.2 DateTime和DateTimeOffset

6.3 DateOnly与TimeOnly

6.4 DateTime与时区

6.4.1 DateTimeOffset与时区

6.4.2 TimeZoneInfo

6.4.3 夏令时与DateTime

6.5 格式化和解析

6.5.1 ToString和Parse

6.5.2 格式提供器

6.6 标准格式字符串与解析标记

6.6.1 数字格式字符串

6.6.2 NumberStyles

6.6.3 DateTime格式字符串

6.6.4 DateTimeStyles

6.6.5 枚举的格式字符串

6.7 其他转换机制

6.7.1 Convert类

6.7.2 XmlConvert

6.7.3 类型转换器

6.7.4 BitConverter

6.8 全球化

6.8.1 全球化检查清单

6.8.2 测试

6.9 操作数字

6.9.1 转换

6.9.2 Math

6.9.3 BigInteger

6.9.4 Half

6.9.5 Complex

6.9.6 Random

6.10 BitOperations类

6.11 枚举

6.11.1 枚举值转换

6.11.2 列举枚举值

6.11.3 枚举的工作方式

6.12 Guid结构体

6.13 相等比较

6.13.1 值相等和引用相等

6.13.2 标准相等比较协议

6.13.3 相等比较和自定义类型

6.14 顺序比较

6.14.1 IComparable

6.14.2 <和>

6.14.3 实现IComparable接口

6.15 实用类

6.15.1 Console类

6.15.2 Environment类

6.15.3 Process类

6.15.4 AppContext类

第7章 集合

7.1 枚举

7.1.1 IEnumerable和IEnumerator

7.1.2 IEnumerable和IEnumerator

7.1.3 实现枚举接口

7.2 ICollection和IList接口

7.2.1 ICollection和ICollection

7.2.2 IList和IList

7.2.3 IReadOnlyCollection与IReadOnlyList

7.3 Array类

7.3.1 创建和索引

7.3.2 枚举

7.3.3 长度和维数

7.3.4 搜索

7.3.5 排序

7.3.6 反转数组元素

7.3.7 复制数组

7.3.8 转换和调整大小

7.4 List、Queue、Stack和Set

7.4.1 List和ArrayList

7.4.2 LinkedList

7.4.3 Queue和Queue

7.4.4 Stack和Stack

7.4.5 BitArray

7.4.6 HashSet和SortedSet

7.5 字典

7.5.1 IDictionary

7.5.2 IDictionary

7.5.3 Dictionary和HashTable

7.5.4 OrderedDictionary

7.5.5 ListDictionary和HybridDictionary

7.5.6 排序字典

7.6 自定义集合与代理

7.6.1 Collection和CollectionBase

7.6.2 KeyedCollection和DictionaryBase

7.6.3 ReadOnlyCollection

7.7 不可变集合

7.7.1 创建不可变集合

7.7.2 使用不可变集合

7.7.3 不可变集合的构建器

7.7.4 不可变集合的性能

7.8 扩展相等比较和排序操作

7.8.1 IEqualityComparer和EqualityComparer

7.8.2 IComparer和Comparer

7.8.3 StringComparer

7.8.4 IStructuralEquatable和IStructuralComparable

第8章 LINQ

8.1 入门

8.2 流式语法

8.2.1 查询运算符链

8.2.2 使用Lambda表达式

8.2.3 原始顺序

8.2.4 其他运算符

8.3 查询表达式

8.3.1 范围变量

8.3.2 LINQ查询语法与SQL语法

8.3.3 查询语法和流式语法

8.3.4 混合查询语法

8.4 延迟执行

8.4.1 重复执行

8.4.2 捕获变量

8.4.3 延迟执行的工作原理

8.4.4 串联装饰器

8.4.5 查询语句的执行方式

8.5 子查询

子查询与延迟执行

8.6 构造方式

8.6.1 渐进式查询构造

8.6.2 into关键字

8.6.3 查询的包装

8.7 投射方式

8.7.1 对象初始化器

8.7.2 匿名类型

8.7.3 let关键字

8.8 解释型查询

8.8.1 解释型查询的工作机制

8.8.2 综合使用解释型查询和本地查询

8.8.3 AsEnumerable方法

8.9 EF Core

8.9.1 EF Core实体类型

8.9.2 DbContext

8.9.3 对象跟踪

8.9.4 更改跟踪

8.9.5 导航属性

8.9.6 延迟执行

8.10 构建查询表达式

8.10.1 委托与表达式树

8.10.2 表达式树

第9章 LINQ运算符

9.1 概述

9.1.1 序列→序列

9.1.2 序列→元素或值

9.1.3 void→序列

9.2 筛选

9.2.1 Where

9.2.2 Take、TakeLast、Skip和SkipLast运算符

9.2.3 TakeWhile和SkipWhile

9.2.4 Distinct和DistinctBy

9.3 投射

9.3.1 Select

9.3.2 SelectMany

9.4 连接

9.4.1 Join和GroupJoin

9.4.2 Zip运算符

9.5 排序

OrderBy、OrderByDescending、ThenBy和ThenBy Descending

9.6 分组

9.6.1 GroupBy

9.6.2 Chunk

9.7 集合运算符

9.7.1 Concat、Union和UnionBy

9.7.2 Intersect、IntersectBy、Except和ExceptBy

9.8 转换方法

9.8.1 OfType和Cast

9.8.2 ToArray、ToList、ToDictionary、ToHashSet和ToLookup

9.8.3 AsEnumerable和AsQueryable

9.9 元素运算符

9.9.1 First、Last和Single

9.9.2 ElementAt运算符

9.9.3 MinBy和MaxBy

9.9.4 DefaultIfEmpty

9.10 聚合方法

9.10.1 Count和LongCount

9.10.2 Min和Max

9.10.3 Sum和Average

9.10.4 Aggregate

9.11 量词运算符

9.11.1 Contains和Any

9.11.2 All和SequenceEqual

9.12 生成集合的方法

9.12.1 Empty

9.12.2 Range和Repeat

第10章 LINQ to XML

10.1 架构概述

10.1.1 什么是DOM

10.1.2 LINQ to XML的DOM

10.2 X-DOM概述

10.2.1 加载和解析

10.2.2 保存和序列化

10.3 实例化X-DOM

10.3.1 函数式构建

10.3.2 指定内容

10.3.3 自动深度克隆

10.4 导航和查询

10.4.1 导航至子节点

10.4.2 导航至父节点

10.4.3 导航至同级节点

10.4.4 导航至节点的属性

10.5 更新X-DOM

10.5.1 简单的值更新

10.5.2 更新子节点和属性

10.5.3 通过父节点更新子节点

10.6 使用Value

10.6.1 设置Value

10.6.2 获得Value

10.6.3 值与混合内容节点

10.6.4 自动连接XText节点

10.7 文档和声明

10.7.1 XDocument

10.7.2 XML声明

10.8 名称和命名空间

10.8.1 XML中的命名空间

10.8.2 在X-DOM中指定命名空间

10.8.3 X-DOM和默认命名空间

10.8.4 前缀

10.9 注解

10.10 将数据投射到X-DOM

10.10.1 排除空元素

10.10.2 流投射

第11章 其他XML与JSON技术

11.1 XmlReader

11.1.1 读取节点

11.1.2 读取元素

11.1.3 读取属性

11.1.4 命名空间和前缀

11.2 XmlWriter

11.2.1 写入属性

11.2.2 写入其他类型节点

11.2.3 命名空间和前缀

11.3 XmlReader/XmlWriter的使用模式

11.3.1 处理多层次结构数据

11.3.2 混合使用XmlReader/XmlWriter和X-DOM

11.4 处理JSON

11.4.1 Utf8JsonReader

11.4.2 Utf8JsonWriter

11.4.3 JsonDocument

11.4.4 JsonNode

第12章 对象销毁与垃圾回收

12.1 IDisposable接口、Dispose方法和Close方法

12.1.1 标准销毁语义

12.1.2 销毁对象的时机

12.1.3 在销毁时清理字段

12.1.4 匿名可销毁对象

12.2 自动垃圾回收

12.3 终结器

12.3.1 在终结器中调用Dispose

12.3.2 对象的复活

12.4 垃圾回收器的工作方式

12.4.1 优化技术

12.4.2 强制垃圾回收

12.4.3 在运行时对垃圾回收进行调整

12.4.4 内存压力

12.4.5 数组池

12.5 托管内存泄漏

12.5.1 定时器

12.5.2 诊断内存泄漏

12.6 弱引用

12.6.1 弱引用和缓存

12.6.2 弱引用和事件

第13章 诊断

13.1 条件编译

13.1.1 条件编译与静态变量标志

13.1.2 Conditional特性

13.2 Debug和Trace类

13.2.1 Fail和Assert方法

13.2.2 TraceListener类

13.2.3 刷新并关闭监听器

13.3 调试器的集成

13.3.1 附加和断点

13.3.2 Debugger特性

13.4 进程与线程处理

13.4.1 检查运行中的进程

13.4.2 在进程中检查线程

13.5 StackTrace和StackFrame类

13.6 Windows事件日志

13.6.1 写入事件日志

13.6.2 读取事件日志

13.6.3 监视事件日志

13.7 性能计数器

13.7.1 遍历可用的计数器

13.7.2 读取性能计数器的数据

13.7.3 创建计数器并写入性能数据

13.8 Stopwatch类

13.9 跨平台诊断工具

13.9.1 dotnet-counters

13.9.2 dotnet-trace

13.9.3 dotnet-dump

第14章 并发与异步

14.1 概述

14.2 线程

14.2.1 创建线程

14.2.2 汇合与休眠

14.2.3 阻塞

14.2.4 本地状态与共享状态

14.2.5 锁与线程安全

14.2.6 向线程传递数据

14.2.7 异常处理

14.2.8 前台线程与后台线程

14.2.9 线程的优先级

14.2.10 信号发送

14.2.11 富客户端应用程序的线程

14.2.12 同步上下文

14.2.13 线程池

14.3 任务

14.3.1 启动任务

14.3.2 返回值

14.3.3 异常

14.3.4 延续

14.3.5 TaskCompletionSource类

14.3.6 Task.Delay方法

14.4 异步编程的原则

14.4.1 同步操作与异步操作

14.4.2 什么是异步编程

14.4.3 异步编程与延续

14.4.4 语言支持的重要性

14.5 C#的异步函数

14.5.1 等待

14.5.2 编写异步函数

14.5.3 异步Lambda表达式

14.5.4 异步流

14.5.5 WinRT中的异步方法

14.5.6 异步与同步上下文

14.5.7 优化

14.6 异步模式

14.6.1 取消操作

14.6.2 进度报告

14.6.3 基于任务的异步模式

14.6.4 任务组合器

14.6.5 异步锁

14.7 旧有的异步编程模式

14.7.1 异步编程模型

14.7.2 基于事件的异步模式

14.7.3 BackgroundWorker类

第15章 流与I/O

15.1 流的架构

15.2 使用流

15.2.1 读取和写入

15.2.2 查找

15.2.3 关闭和刷新

15.2.4 超时

15.2.5 线程安全

15.2.6 后台存储流

15.2.7 FileStream类

15.2.8 MemoryStream

15.2.9 PipeStream

15.

C#10核心技术指南是2024年由机械工业出版社出版,作者[澳] 约瑟夫·阿坝哈瑞。

得书感谢您对《C#10核心技术指南》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
HTML5基础知识、核心技术与前沿案例 电子书
夯实HTML5、CSS3、JavaScript基础; 兼顾PC端和移动端开发; 讲解布局、动效、交互、页面组件和响应式设计等核心技术; 前沿案例涵盖初中级HTML5开发者遇到的几乎所有实战问题,并渗透各种交互设计理念; “经验”总结,提炼学习内容,囊括HTML5外延知识,拓宽读者学习视野。
透视C#核心技术:系统架构及移动端开发 电子书
本书采用循序渐进的方式讲解C#及其在电商、ERP及手机APP方面的开发技术。
RPA落地指南 电子书
一本书读懂RPA,科技赋能企业数字化转型。
OpenDaylight应用指南 电子书
本书分为OpenDaylight基础概述、重点项目介绍和开发实践三部分。介绍了OpenDaylight社区背景、组织架构与项目概况;分析与阐释了OpenDaylight部分主要项目的设计思路、原理和开发技术;探讨了基于OpenDaylight进行业务控制平台开发的实践经验。本书可以作为网络技术人员和IT系统开发人员的中初级读物,帮助他们快速了解OpenDaylight社区及其大型通用SDN控制器的
Android Gradle权威指南 电子书
  30万 读者的选择   一本关于AndroidGradle的权V指南   基于新的AndroidGradle   一本由浅入深讲解AndroidGradle开发的书   对Gradle基础、Groovy基础、Gradle插件、AndroidGradle构建、基于AndroidGradle的单元测试和持续集成等做循序渐进的讲解   在讲解的过程中融入作者在项目中遇到的问题、解决问题的思路以及方法。   通过本书,读者可以入门,并且深入了解Gradle以及AndroidGradle构建,并以此为基础,深入AndroidGradle相关知识点和使用技巧,让读者在工作中事半功倍。