C#编程:构建云、Web和桌面应用程序
Ian Griffiths
陈影, 李纪红, 贾爱光 译
出版时间:2023年03月
页数:588
“与侧重于Visual Studio和C#交互技术的书籍不同,本书涵盖了核心语言,掌握这一核心语言对于成功构建优秀软件来说至关重要。书中涵盖了重要的概念,并通过大量的示例代码来解释它们。本书涉及的解释非常透彻、详细,内容覆盖了其他书籍很少涉及的语言边缘知识。这是一本关于C#的完整课程。”
——Jeremy Morgan
软件/开发运营工程师

不可否认,C#是当今工程师使用的最通用的编程语言之一。通过本书的全面指南,您可以了解C#和.NET的组合是多么强大。作者伊恩·格里菲斯将指导您运用C#基础知识和技术来构建云、Web和桌面应用程序。
本书为有经验的程序员提供了许多代码示例,以帮助读者处理C#的具体细节,如泛型、LINQ和异步编程特性,并能够快速了解.NET Core和C# 8.0及以后版本的新增功能,包括异步流、可空引用、模式匹配、默认接口实现、值域和新索引语法,以及.NET工具链中的更改。

● 了解C#是如何支持基本编码功能的,如类、其他自定义类型、集合和错误处理。
● 了解如何使用.NET Core的Span和Memory类型编写高性能内存高效的代码。
● 使用LINQ查询和处理各种数据源,如内存对象模型、数据库、数据流和XML文档。
● 使用.NET的多线程特性充分发挥计算机的并行处理能力。
● 了解异步语言功能是如何帮助提高应用程序响应性和可扩展性的。
  1. 第1章 简介
  2. 1.1 为什么选择C#语言
  3. 1.2 C#的定义特征
  4. 1.2.1 托管代码和CLR
  5. 1.2.2 偏好一般性而不是专门化
  6. 1.3 C#标准和实现
  7. 1.3.1 微软.NET系列平台(Temporarily)
  8. 1.3.2 以.NET标准为目标的多个.NET版本
  9. 1.4 Visual Studio和Visual Studio代码
  10. 1.5 简单程序剖析
  11. 1.5.1 向现有解决方案中添加项目
  12. 1.5.2 从另一个项目引用一个项目
  13. 1.5.3 引用外部库
  14. 1.5.4 编写单元测试
  15. 1.5.5 命名空间
  16. 1.5.6 类
  17. 1.5.7 程序入口点
  18. 1.5.8 单元测试
  19. 1.6 小结
  20. 第2章 C#编程基础
  21. 2.1 局部变量
  22. 变量的作用域
  23. 2.2 语句和表达式
  24. 2.2.1 语句
  25. 2.2.2 表达式
  26. 2.3 注释和空格
  27. 2.4 预处理指令
  28. 2.4.1 编译符号
  29. 2.4.2 #error和#warnning
  30. 2.4.3 #lin
  31. 2.4.4 #pragma
  32. 2.4.5 #nullable
  33. 2.4.6 #region和#endregion
  34. 2.5 基本数据类型
  35. 2.5.1 数值类型
  36. 2.5.2 布尔类型
  37. 2.5.3 字符串和字符
  38. 2.5.4 元组
  39. 2.5.5 动态
  40. 2.5.6 对象
  41. 2.6 运算
  42. 2.7 控制流
  43. 2.7.1 if语句
  44. 2.7.2 switch语句
  45. 2.7.3 while和do循环
  46. 2.7.4 C语言风格的for循环
  47. 2.7.5 使用foreach循环进行迭代集合
  48. 2.8 模式
  49. 2.8.1 更具体的时间
  50. 2.8.2 表达式模式
  51. 2.9 小结
  52. 第3章 类型
  53. 3.1 类
  54. 3.1.1 静态成员
  55. 3.1.2 静态类
  56. 3.1.3 引用类型
  57. 3.2 结构
  58. 3.2.1 何时写入值类型
  59. 3.2.2 保证不变性
  60. 3.3 成员
  61. 3.3.1 字段
  62. 3.3.2 构造函数
  63. 3.3.3 解构
  64. 3.3.4 方法
  65. 3.3.5 属性
  66. 3.3.6 索引器
  67. 3.3.7 初始化语法
  68. 3.3.8 运算符
  69. 3.3.9 事件
  70. 3.3.10 嵌套类型
  71. 3.4 接口
  72. 默认接口实现
  73. 3.5 枚举
  74. 3.6 其他类型
  75. 匿名类型
  76. 3.7 部分类型和方法
  77. 3.8 小结
  78. 第4章 泛型
  79. 4.1 泛型类型
  80. 4.2 约束
  81. 4.2.1 类型约束
  82. 4.2.2 引用类型约束
  83. 4.2.3 值类型约束
  84. 4.2.4 具有非托管约束的值类型
  85. 4.2.5 非空约束
  86. 4.2.6 其他特殊类型的约束
  87. 4.2.7 多重约束
  88. 4.3 零值
  89. 4.4 泛型方法
  90. 类型推断
  91. 4.5 泛型和元组
  92. 4.6 内部泛型
  93. 4.7 总结
  94. 第5章 集合
  95. 5.1 数组
  96. 5.1.1 数组初始化
  97. 5.1.2 搜索和排序
  98. 5.1.3 多维数组
  99. 5.1.4 复制和调整
  100. 5.2 List<T>
  101. 5.3 列表和序列接口
  102. 5.4 实现列表和序列
  103. 5.4.1 使用迭代器实现
  104. IEnumera<T>
  105. 5.4.2 Collection<T>
  106. 5.4.3 ReadOnlyCollection<T>
  107. 5.5 使用索引和范围语法对元素进行寻址
  108. 5.5.1 System.Index
  109. 5.2.2 System.Range
  110. 5.5.3 在自己的类型中支持索引和范围
  111. 5.6 字典
  112. 字典排序
  113. 5.7 集合
  114. 5.8 队列和栈
  115. 5.9 链接列表
  116. 5.10 并发集合
  117. 5.11 不可变的集合
  118. 5.12 ImmutableArray<T>
  119. 5.13 小结
  120. 第6章 继承
  121. 6.1 继承和转换
  122. 6.2 接口继承
  123. 6.3 泛型
  124. 协变和逆变
  125. 6.4 System.Object
  126. System.Object的通用方法
  127. 6.5 可访问性和继承
  128. 6.6 虚方法
  129. 6.6.1 抽象方法
  130. 6.6.2 继承和库版本
  131. 6.7 密封方法和密封类
  132. 6.8 访问基类成员
  133. 6.9 继承与构造
  134. 6.10 特殊基类型
  135. 6.11 小结
  136. 第7章 对象生命周期
  137. 7.1 垃圾回收器
  138. 7.1.1 确定可访问性
  139. 7.1.2 意外击败垃圾回收器
  140. 7.1.3 弱引用
  141. 7.1.4 回收内存
  142. 7.1.5 垃圾回收器模式
  143. 7.1.6 暂停垃圾回收
  144. 7.1.7 意外击败压缩
  145. 7.1.8 强制垃圾回收
  146. 7.2 析构函数与终结
  147. 7.3 IDisposable
  148. 可选释放
  149. 7.4 装箱
  150. 装箱Nullale<T>
  151. 7.5 小结
  152. 第8章 异常
  153. 8.1 异常源
  154. 8.1.1 来自API的异常
  155. 8.1.2 运行时检测到的故障
  156. 8.2 处理异常
  157. 8.2.1 异常对象
  158. 8.2.2 多个catch块
  159. 8.2.3 异常过滤器
  160. 8.2.4 嵌套try块
  161. 8.2.5 finally块
  162. 8.3 抛出异常
  163. 8.3.1 重新抛出异常
  164. 8.3.2 快速失败
  165. 8.4 异常类型
  166. 自定义异常
  167. 8.5 未处理的异常
  168. 8.6 小结
  169. 第9章 委托、lambda表达式和事件
  170. 9.1 托类类型
  171. 9.1.1 创建委托
  172. 9.1.2 多播委托
  173. 9.1.3 调用委托
  174. 9.1.4 通用委托类型
  175. 9.1.5 类型的兼容性
  176. 9.1.6 后面的语法
  177. 9.2 匿名函数
  178. 9.2.1 捕获变量
  179. 9.2.2 lambda和表达式树
  180. 9.3 事件
  181. 9.3.1 标准事件委托模式
  182. 9.3.2 自定义添加和删除方法
  183. 9.3.3 事件和垃圾回收器
  184. 9.4 事件与委托
  185. 9.5 委托与接口
  186. 9.6 小结
  187. 第10章 LINQ
  188. 10.1 查询表达式
  189. 10.1.1 如何扩展查询表达式
  190. 10.1.2 支持查询表达式
  191. 10.2 延迟求值
  192. 10.3 LINQ、泛型和IQueryable<T>
  193. 10.4 LINQ标准查询运算符
  194. 10.4.1 筛选
  195. 10.4.2 Select
  196. 10.5 数据整形和匿名类型
  197. 10.6 投影和映射
  198. 10.6.1 SeletMany
  199. 10.6.2 排序
  200. 10.6.3 包含测试
  201. 10.6.4 特定项目和子范围
  202. 10.6.5 聚合
  203. 10.6.6 集运算符
  204. 10.6.7 全序列、保序运算符
  205. 10.6.8 分组
  206. 10.6.9 连接
  207. 10.6.10 转换
  208. 10.6.11 序列生成
  209. 10.7 其他LINQ实现
  210. 10.7.1 实体框架
  211. 10.7.2 并行LINQ(PLINQ)
  212. 10.7.3 LINQ to XML
  213. 10.7.4 反应式扩展
  214. 10.7.5 Tx (LINQ to Logs and Traces)
  215. 10.8 小结
  216. 第11章 反应式扩展
  217. 11.1 基本接口
  218. 11.1.1 IObserver<T>
  219. 11.1.2 IObservable<T>
  220. 11.2 用委托发布和订阅
  221. 11.2.1 使用委托创建可观察源
  222. 11.2.2 用委托订阅可观察源
  223. 11.3 序列化生成器
  224. 11.3.1 Empty
  225. 11.3.2 Never
  226. 11.3.3 Throw
  227. 11.3.4 Range
  228. 11.3.5 Repeat
  229. 11.3.6 Generate
  230. 11.4 LINQ查询
  231. 11.4.1 分组运算
  232. 11.4.2 连接运算
  233. 11.4.3 SelectMany运算符
  234. 11.4.4 聚合和其他单值运算符
  235. 11.4.5 Concat运算
  236. 11.5 Rx查询运算符
  237. 11.5.1 Merge运算符
  238. 11.5.2 Windowing运算符
  239. 11.5.3 Scan运算符
  240. 11.5.4 Amb运算符
  241. 11.5.5 DistinctUntilChanged运算符
  242. 11.6 调度器
  243. 11.6.1 指定调度器
  244. 11.6.2 内置调度器
  245. 11.7 Subjects
  246. 11.7.1 Subject<T>
  247. 11.7.2 BehaviorSubject<T>
  248. 11.7.3 ReplaySubject<T>
  249. 11.7.4 AsyncSubject<T>
  250. 11.8 适配
  251. 11.8.1 IEnumerable<T>和IAsyncEnumerable<T>
  252. 11.8.2 .NET事件
  253. 11.8.3 异步API
  254. 11.9 定时操作
  255. 11.9.1 间隔
  256. 11.9.2 定时器
  257. 11.9.3 时间戳
  258. 11.9.4 时间间隔
  259. 11.9.5 Throttle
  260. 11.9.6 样本
  261. 11.9.7 超时
  262. 11.9.8 窗口运算符
  263. 11.9.9 Delay
  264. 11.9.10 DelaySubscription
  265. 11.10 小结
  266. 第12章 程序集
  267. 12.1 程序集解析
  268. 12.1.1 .NET元数据
  269. 12.1.2 资源
  270. 12.1.3 多文件程序集
  271. 12.1.4 其他PE功能
  272. 12.2 类型标识
  273. 12.3 加载程序集
  274. 12.3.1 程序集解析
  275. 12.3.2 显示加载
  276. 12.3.3 带有AssemblyLoadContext的隔离和插件
  277. 12.4 程序集名称
  278. 12.4.1 强命名
  279. 12.4.2 版本
  280. 12.4.3 区域性
  281. 12.5 保护
  282. 12.6 小结
  283. 第13章 反射
  284. 13.1 反射类型
  285. 13.1.1 程序集
  286. 13.1.2 模块
  287. 13.1.3 MemberInfo
  288. 13.1.4 Type和TypeInfo
  289. 13.1.5 MethodBase、ConstructionorInfo和MethodInfo
  290. 13.1.6 ParameterInfo
  291. 13.1.7 FieldInfo
  292. 13.1.8 PropertyInfo
  293. 13.1.9 EventInfo
  294. 13.2 反射上下文
  295. 13.3 小结
  296. 第14章 属性
  297. 14.1 应用属性
  298. 14.1.1 属性目标
  299. 14.1.2 Compiler-Handled属性
  300. 14.1.3 CLR-Handled属性
  301. 14.2 定义和使用属性
  302. 14.2.1 属性类型
  303. 14.2.2 检索属性
  304. 14.3 小结
  305. 第15章 文件和流
  306. 15.1 Stream类
  307. 15.1.1 定位与查找
  308. 15.1.2 刷新
  309. 15.1.3 复制
  310. 15.1.4 长度
  311. 15.1.5 处理
  312. 15.1.6 异步操作
  313. 15.1.7 具体流类型
  314. 15.1.8 一种类型,多种行为
  315. 15.2 面向文本的类型
  316. 15.2.1 TextReader和TextWriter
  317. 15.2.2 具体的读写器类型
  318. 15.2.3 编码
  319. 15.3 文件和目录
  320. 15.3.1 FileStream类
  321. 15.3.2 文件类
  322. 15.3.3 目录类
  323. 15.3.4 路径类
  324. 15.3.5 FileInfo、DirectoryInfo和FileSystemInfo
  325. 15.3.6 已知文件夹
  326. 15.4 序列化
  327. 15.4.1 BinaryReader、BinaryWriter和BinaryPrimitives
  328. 15.4.2 CLR序列化
  329. 15.4.3 JSON.NET
  330. 15.5 小结
  331. 第16章 多线程
  332. 16.1 线程
  333. 16.1.1 线程、变量和共享状态
  334. 16.1.2 线程类
  335. 16.1.3 线程池
  336. 16.1.4 线程亲和性和同步上下文
  337. 16.2 同步
  338. 16.2.1 监视器和lock关键字
  339. 16.2.2 自旋锁
  340. 16.2.3 读/写锁
  341. 16.2.4 事件对象
  342. 16.2.5 屏障
  343. 16.2.6 CountdownEvent
  344. 16.2.7 信号量
  345. 16.2.8 Mutex
  346. 16.2.9 互锁
  347. 16.2.10 延迟初始
  348. 16.2.11 其他类库并发支持
  349. 16.3 任务
  350. 16.3.1 Task和Task<T>类
  351. 16.3.2 延续
  352. 16.3.3 调度器
  353. 16.3.4 错误处理
  354. 16.3.5 自定义Threadless Tasks
  355. 16.3.6 复合任务
  356. 16.4 其他异步模式
  357. 16.5 取消
  358. 16.6 并行
  359. 16.6.1 Parallel类
  360. 16.6.2 并行LINQ
  361. 16.6.3 TPL数据流
  362. 16.7 小结
  363. 第17章 异步语言特性
  364. 17.1 异步关键字:async和await
  365. 17.1.1 执行和同步上下文
  366. 17.1.2 多重操作和循环
  367. 17.1.3 返回任务
  368. 17.1.4 将异步应用于嵌套方法
  369. 17.2 等待模式
  370. 17.3 错误处理
  371. 17.3.1 验证参数
  372. 17.3.2 一个和多个异常
  373. 17.3.3 并发操作和错过的异常
  374. 17.4 小结
  375. 第18章 内存效率
  376. 18.1 避免不必要地复制数据
  377. 18.2 用Span<T>表示序列元素
  378. 18.2.1 Utility方法
  379. 18.2.2 Stack Only
  380. 18.3 用Memory<T>表示顺序元素
  381. 18.4 ReadOnlySequency<T>
  382. 18.5 使用pipeline处理数据流
  383. 在ASP.NET Core中处理JSON
  384. 18.6 小结
书名:C#编程:构建云、Web和桌面应用程序
作者:Ian Griffiths
译者:陈影, 李纪红, 贾爱光 译
国内出版社:中国水利水电出版社
出版时间:2023年03月
页数:588
书号:978-7-5226-1265-2
原版书书名:Programming C# 8.0
原版书出版商:O'Reilly Media
Ian Griffiths
 
Ian Griffiths是一位WPF作家和Pluralsight指导专家,并且在这些科目上的专业水准都得到了广泛的认可。他还是一位独立顾问并且与人合著了《.NET Windows Forms in a Nutshell》和《Mastering Visual Studio .NET》(这两本都是由O'Reilly出版)。他有一个非常受欢迎的博客:http://www.interact-sw.co.uk/iangblog/。

Ian Griffiths是一名C#讲师,也是该领域广受认可的专家;是技术咨询公司endjin的技术研究员,也是Programming WPF (O’Reilly)的合著者。他拥有剑桥大学的计算机科学学位。
 
 
C#编程的封面上的动物是一只灰冠鹤(学名Balearica regulorum)。这种鸟的活动范围从肯尼亚和乌干达的北部一直延伸到南非东部,它们更喜欢生活在开阔的沼泽和草原等栖息地。
成年的鸟高3~4英尺,体重约8磅。它们是视觉上引人注目的鸟类,有灰色的身体、浅灰色的脖子、白色和金色的翅膀、白色的双颊(上面有红斑)、黑色的冠顶、下垂的亮红色喉咙和蓝色的眼睛。除此之外(它们的名字也来源于此),它们的后脑勺上有一束独特的坚硬的金色细丝。
冠鹤在野外的寿命可达20年,它们醒着的大部分时间都在草地上寻找小动物和昆虫,以及种子和谷物。它们是仅有的两种夜间在树上栖息的鹤类之一,这一壮举是由于它们有一个可缠绕的后脚趾,使它们能够抓住树枝。这些鸟最多能产四个蛋,孵化几个小时后,雏鸟就能跟随它们的父母以及全家人一起觅食。
群居且健谈的冠鹤成双或成家族地聚集在一起,有时会形成超过100只的鸟群。和其他鹤一样,它们以精心设计的求偶舞蹈而闻名,这些舞蹈包括短时间向上飞行、拍打翅膀和深弓等。
尽管这些乌类的活动范围很广,但目前仍被认为是濒危物种,它们受到栖息地丧失、偷猎蛋和使用杀虫剂的威胁。
购买选项
定价:128.00元
书号:978-7-5226-1265-2
出版社:中国水利水电出版社