类似推荐
编辑推荐
系统讲解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
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
7.1.3 实现枚举接口
7.2 ICollection和IList接口
7.2.1 ICollection
7.2.2 IList
7.2.3 IReadOnlyCollection
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
7.4.2 LinkedList
7.4.3 Queue
7.4.4 Stack
7.4.5 BitArray
7.4.6 HashSet
7.5 字典
7.5.1 IDictionary
7.5.2 IDictionary
7.5.3 Dictionary
7.5.4 OrderedDictionary
7.5.5 ListDictionary和HybridDictionary
7.5.6 排序字典
7.6 自定义集合与代理
7.6.1 Collection
7.6.2 KeyedCollection
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核心技术指南》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。