书籍期刊

《C# 11和.NET 7入门与跨平台开发(第7版)》

本书将为你学习C# 11和.NET 7奠定坚实的基础,使你能够自信地构建应用程序和服务。学习完本书,你将能够创建丰富的Web应用,并能牢牢掌握面向对象编程技术,进而能在此基础上进行...

  • 作者Mark J. Price
  • 出版社清华大学出版社
  • 发行日期2024-02-01
  • ISBN9787302653288
  • 开本16开
  • 标签

内容简介

《C# 11和.NET 7入门与跨平台开发(第7版)》将为你学习C# 11和.NET 7奠定坚实的基础,使你能够自信地构建应用程序和服务。学习完本书,你将能够创建丰富的Web应用,并能牢牢掌握面向对象编程技术,进而能在此基础上进行项目开发。

● 使用Blazor、Razor Pages、MVC模式和ASP.NET Core的其他特性构建丰富的Web应用
● 利用面向对象编程构建自己的类型
● 编写、测试和调试函数
● 使用LINQ查询和操作数据
● 使用Entity Framework Core模型在应用程序中集成和更新数据库
● 使用最新的技术,包括Web API和最小API,构建和消费强大的服务

作者简介

Mark J. Price是一位拥有20多年C#编程经验的微软认证技术专家,他专注于C#编程以及构建Azure 云解决方案。自1993 年以来,Mark 已通过了80 多次微软编程考试,他特别擅长传道授业。从2001 年到2003年,Mark 在美国雷德蒙德全职为微软编写官方课件。当C#还处于alpha版本时,他的团队就为C#编写了第一个培训教程。在微软任职期间,他为培训师上课,指导微软认证培训师快速掌握C#和.NET。Mark 职业生涯中的大部分时间都在培训各类学生,从16 岁的新人到70 岁的退休人员,其中大部分是专业开发人员。Mark 拥有计算机科学学士学位。

目录

第1 章 C#与.NET 入门 1

1.1 设置开发环境 2
1.1.1 选择适合学习的工具和应用程序类型 3
1.1.2 跨平台部署 5
1.1.3 下载并安装Visual Studio 2022 for Windows 5
1.1.4 下载并安装Visual Studio Code 6
1.2 理解.NET 8
1.2.1 理解.NET Framework 8
1.2.2 理解Mono、Xamarin 和Unity项目 9
1.2.3 理解.NET Core 9
1.2.4 了解走向.NET 的过程 9
1.2.5 了解.NET 支持 10
1.2.6 现代.NET 的区别 12
1.2.7 了解.NET Standard 13
1.2.8 本书使用的.NET 平台和工具 14
1.2.9 Apps and Services with NET 7 中涵盖的主题 15
1.2.10 理解中间语言 15
1.2.11 比较.NET 技术 15
1.3 使用Visual Studio 2022 构建控制台应用程序 16
1.3.1 使用Visual Studio 2022 管理多个项目 16
1.3.2 使用Visual Studio 2022编写代码 16
1.3.3 使用Visual Studio 编译和运行代码 17
1.3.4 理解顶级程序 19
1.3.5 使用Visual Studio 2022 添加第二个项目 21
1.4 使用Visual Studio Code 构建控制台应用程序 22
1.4.1 使用Visual Studio Code 管理多个项目 22
1.4.2 使用Visual Studio Code编写代码 22
1.4.3 使用dotnet CLI 编译和运行代码 25
1.4.4 使用Visual Studio Code 添加第二个项目 26
1.5 使用.NET Interactive Notebook探索代码 27
1.6 检查项目的文件夹和文件 28
1.6.1 了解常见的文件夹和文件 28
1.6.2 理解GitHub 中的解决方案代码 28
1.7 充分利用本书的GitHub 存储库 29
1.7.1 对本书提出问题 29
1.7.2 反馈 29
1.7.3 从GitHub 存储库下载解决方案代码 30
1.7.4 在Visual Studio Code 和命令行中使用Git 30
1.8 寻求帮助 31
1.8.1 阅读微软文档 31
1.8.2 获取关于dotnet 工具的帮助 31
1.8.3 获取类型及其成员的定义 32
1.8.4 在Stack Overflow 上寻找答案 34
1.8.5 使用谷歌搜索答案 34
1.8.6 订阅官方的.NET 博客 35
1.8.7 观看Scott Hanselman 的视频 35
1.8.8 本书的配套图书 35
1.9 实践和探索 35
1.9.1 练习1.1:测试你掌握的知识 36
1.9.2 练习1.2:使用浏览器在任何地方练习C# 36
1.9.3 练习1.3:探索主题 36
1.9.4 练习1.4:探索现代.NET 的主题 37
1.10 本章小结 37

第2 章 C#编程基础 38

2.1 介绍C# 38
2.1.1 理解语言版本和特性 38
2.1.2 了解C#标准 42
2.1.3 了解C#编译器版本 43
2.2 理解C#语法和词汇 45
2.2.1 显示编译器版本 45
2.2.2 了解C#语法 46
2.2.3 语句 46
2.2.4 注释 47
2.2.5 块 47
2.2.6 语句和块的示例 48
2.2.7 了解C#词汇表 48
2.2.8 将编程语言与人类语言进行比较 48
2.2.9 改变C#语法的配色方案 49
2.2.10 如何编写正确的代码 49
2.2.11 导入名称空间 50
2.2.12 动词表示方法 53
2.2.13 名词表示类型、变量、字段和属性 54
2.2.14 揭示C#词汇表的范围 54
2.3 使用变量 56
2.3.1 命名和赋值 57
2.3.2 字面值 57
2.3.3 存储文本 57
2.3.4 存储数字 60
2.3.5 存储实数 61
2.3.6 存储布尔值 64
2.3.7 存储任何类型的对象 64
2.3.8 动态存储类型 65
2.3.9 声明局部变量 66
2.3.10 获取和设置类型的默认值 68
2.4 深入研究控制台应用程序 69
2.4.1 向用户显示输出 69
2.4.2 从用户那里获取文本输入 72
2.4.3 简化控制台的使用 73
2.4.4 获取用户的重要输入 74
2.4.5 向控制台应用程序传递参数 74
2.4.6 使用参数设置选项 76
2.4.7 处理不支持API 的平台 78
2.5 理解async 和await 79
2.6 实践和探索 80
2.6.1 练习2.1:测试你掌握的知识 81
2.6.2 练习2.2:测试你对数字类型的了解 81
2.6.3 练习2.3:练习数字大小和范围 81
2.6.4 练习2.4:探索主题 82
2.7 本章小结 82

第3 章 控制程序流程、转换类型和处理异常 83

3.1 操作变量 83
3.1.1 一元算术运算符 84
3.1.2 二元算术运算符 85
3.1.3 赋值运算符 86
3.1.4 逻辑运算符 86
3.1.5 条件逻辑运算符 87
3.1.6 按位和二元移位运算符 88
3.1.7 其他运算符 90
3.2 理解选择语句 90
3.2.1 使用if 语句进行分支 90
3.2.2 模式匹配与if 语句 91
3.2.3 使用switch 语句进行分支 92
3.2.4 模式匹配与switch 语句 94
3.2.5 使用switch 表达式简化switch 语句 95
3.3 理解迭代语句 96
3.3.1 while 循环语句 96
3.3.2 do 循环语句 97
3.3.3 for 循环语句 97
3.3.4 foreach 循环语句 98
3.3.5 在数组中存储多个值 99
3.4 类型转换 105
3.4.1 隐式和显式地转换数字 105
3.4.2 使用System.Convert 类型进行转换 107
3.4.3 圆整数字 107
3.4.4 控制圆整规则 108
3.4.5 从任何类型转换为字符串 108
3.4.6 从二进制对象转换为字符串 109
3.4.7 将字符串转换为数字或日期和时间 110
3.5 处理异常 111
3.6 检查溢出 115
3.6.1 使用checked 语句抛出溢出异常 115
3.6.2 使用unchecked 语句禁用编译时溢出检查 116
3.7 实践和探索 117
3.7.1 练习3.1:测试你掌握的知识 118
3.7.2 练习3.2:探索循环和溢出 118
3.7.3 练习3.3:实践循环和运算符 118
3.7.4 练习3.4:实践异常处理 119
3.7.5 练习3.5:测试你对运算符的认识程度 119
3.7.6 练习3.6:探索主题 119
3.8 本章小结 120

第4 章 编写、调试和测试函数 121

4.1 编写函数 121
4.1.1 理解顶级程序和函数 121
4.1.2 乘法表示例 123
4.1.3 简述实参与形参 125
4.1.4 编写带返回值的函数 126
4.1.5 将数字从序数转换为基数 128
4.1.6 用递归计算阶乘 129
4.1.7 使用XML 注释解释函数 132
4.1.8 在函数实现中使用lambda 133
4.2 在开发过程中进行调试 135
4.2.1 在调试期间使用Visual Studio Code集成终端 135
4.2.2 创建带有故意错误的代码 136
4.2.3 设置断点并开始调试 137
4.2.4 使用调试工具栏进行导航 139
4.2.5 调试窗口 140
4.2.6 单步执行代码 140
4.2.7 自定义断点 141
4.3 在开发期间进行热重载 142
4.3.1 使用Visual Studio 2022 进行热重载 143
4.3.2 使用Visual Studio Code 和命令行进行热重载 143
4.4 在开发和运行时进行日志记录 144
4.4.1 理解日志记录选项 144
4.4.2 使用Debug 和Trace 类型 144
4.4.3 配置跟踪侦听器 146
4.4.4 切换跟踪级别 147
4.4.5 记录有关源代码的信息 152
4.5 单元测试 153
4.5.1 理解测试类型 153
4.5.2 创建需要测试的类库 154
4.5.3 编写单元测试 156
4.6 在函数中抛出和捕获异常 158
4.6.1 理解使用错误和执行错误 158
4.6.2 在函数中通常抛出异常 158
4.6.3 理解调用堆栈 159
4.6.4 在哪里捕获异常 162
4.6.5 重新抛出异常 162
4.6.6 实现tester-doer 模式 163
4.7 实践和探索 164
4.7.1 练习4.1:测试你掌握的知识 164
4.7.2 练习4.2:使用调试和单元测试练习函数的编写 165
4.7.3 练习4.3:探索主题 165
4.8 本章小结 165

前言/序言

有些C#书籍长达数千页,旨在全面介绍C#编程语言、.NET 库和应用程序模型(如网站、服务、桌面应用和移动应用)。

本书与众不同,内容简洁清晰、行文流畅,每个主题都配有实际动手演练项目。进行总体叙述的广度是以牺牲一定深度为代价的,但如果愿意,你就会发现许多主题都值得进一步探索。

本书也是一本循序渐进的学习指南,可用于通过跨平台的.NET 学习现代C#实践,并简要介绍Web 开发的基础知识,以及可以使用它们构建的网站和服务。本书最适合C#和.NET 初学者阅读,也适合学过C#但感觉在过去几年自身技术已落伍的程序员阅读。

如果有使用旧版本C#语言的经验,那么可以在2.1 节查看介绍新语言特性的表格,并直接跳到相应的部分阅读。

如果有使用较旧版本的.NET 库的经验,那么可以在7.1 节查看介绍新库特性的表格,并直接跳到相应的部分阅读。

本书将指出C#和.NET 的一些优缺点,让你在同事面前留下深刻的印象,并快速提高工作效率。本书的解释不会事无巨细,以免因放慢速度导致读者感到无聊,而是假设读者足够聪明,能够自行对一些初、中级程序员需要了解的主题进行搜索和解释。

本书内容

第1章介绍如何设置开发环境,并通过C#和.NET,使用Visual Studio 2022或Visual Studio Code创建最简单的应用程序。对于简化的控制台应用程序,将使用C# 9 中引入的顶级程序功能。在C# 10 及更高版本中,默认项目模板使用了顶级程序功能。为了学习如何编写简单的语言构造和库特性,在一个在线小节中介绍了.NET Interactive Notebooks 的使用。该章还介绍了可以从哪里寻求帮助,以及与我联系的方法,以便在某个问题上获得帮助,或者向我提供反馈,使我能够在GitHub 存储库或将来的印刷版本中改进本书。

第2 章介绍C#的版本,并通过一些表介绍各个版本的新特性,然后解释C#日常用来为应用程序编写源代码的语法和词汇。特别是,该章将讲述如何声明和处理不同类型的变量,还将展示C# 11 中的原始字符串字面值特性多么有用。

第3 章讨论如何使用操作符对变量执行简单的操作,包括比较、编写决策,C# 7 到 C# 11 中的模式匹配,以及重复语句块和类型之间的转换。该章还介绍在不可避免地发生错误时,如何编写防御性代码来处理这些错误。

第4 章讲述如何遵循Don’t Repeat Yourself (不要重复自己,DRY)原则,使用命令式和函数式风格编写可重用的函数。你将学习使用调试工具来跟踪和删除bug,利用热加载在应用程序运行过程中进行修改,在执行代码时监视代码以诊断问题,以及在将代码部署到生产环境之前严格测试代码,以删除bug 并确保稳定性和可靠性。

第5 章讨论类可以拥有的所有不同类别的成员,包括存储数据的字段和执行操作的方法。涉及面向对象编程(Object-Oriented Programming,OOP)概念,如聚合和封装。你将学习一些语言特性,比如元组语法支持和out 变量,运算符和局部函数,默认的字面值和推断出的元组名称,以及如何使用C# 9 中引入的record 关键字、init-only 属性和with 表达式来定义和使用不可变类型。

还将介绍C# 11 引入的required 关键字,它可以帮助避免过度使用构造函数来控制初始化。

第6 章解释如何使用OOP 从现有类型派生出新的类型。你将学习如何定义委托和事件,如何实现关于基类和派生类的接口,如何覆盖类型成员以及使用多态性,如何创建扩展方法,如何在继承层次结构中的类之间进行转换,以及C# 8 中引入的可空引用类型带来的巨大变化,并且在C# 10 及更高版本中使其成为了默认类型。你还将学习分析器如何帮助你编写更好的代码。

第7 章介绍.NET 的版本,并给出一些表来说明哪些版本引入了一些新特性,然后介绍与.NET Standard 兼容的.NET 类型以及它们与 C#的关系。你将学习如何在任何受支持的操作系统(Windows、macOS 和Linux 变体)上编写和编译代码。你将学习如何打包、部署和分发自己的应用程序和库。

第8 章讨论允许代码执行的实际任务的类型,例如操作数字和文本、在集合中存储项和使用网络(在线小节)。 还将学习正则表达式,让正则表达式变得更容易编写的一些改进方法,以及在.NET 7 中,如何使用源代码生成器来提高它们的性能。

第9 章讨论与文件系统的交互、对文件和流的读写、文本编码、诸如JSON 和XML 的序列化格式,还涉及改进的功能以及System.Text.Json 类的性能问题。

第10 章解释如何使用名为Entity Framework Core (EF Core)的ORM 技术来读写关系数据库,如Microsoft SQL Server 和SQLite。了解如何使用数据库优先模型定义映射到数据库中现有表的实体模型,以及如何定义可以在运行时创建表和数据库的Code First 模型(在线小节)。

第11 章介绍LINQ。LINQ 扩展语言增加了处理条目序列、筛选、排序,以及将它们投影到不同输出的能力。介绍.NET 6 中新引入的LINQ 方法,如TryGetNonEnumeratedCount 和DistinctBy,以及.NET 7 中新引入的LINQ 方法,如Order 和OrderDescending。你将了解LINQ to XML 的特殊功能。该章的一个在线小节介绍了如何使用并行LINQ (PLINQ)提高效率。

第12 章介绍可以使用C#和.NET 构建的Web 应用程序的类型。该章还将通过构建EF Core模型来表示虚构组织Northwind 的数据库。Northwind 数据库将贯穿用于本书的剩余部分。最后,介绍了常用的Web 技术。

第13 章介绍在服务器端通过ASP.NET Core 使用现代HTTP 架构构建网站的基础知识。你将学习如何实现一种ASP.NET Core 特性(Razor Pages),从而简化为小型网站创建动态网页的过程,还将学习如何构建HTTP 请求和响应管道,以及如何在网站项目中启用HTTP/3。

第14 章讨论程序员团队如何利用ASP.NET Core MVC 以一种易于进行单元测试和管理的方式构建大型、复杂的网站。你将了解启动配置、身份验证、路由、模型、视图和控制器。还将了解一种.NET 社区热切期盼并最终在ASP.NET Core 7 中实现的特性:输出缓存。

第15 章解释如何使用ASP.NET Core Web API 构建后端REST 体系结构Web 服务。讨论如何使用OpenAPI 记录和测试它们,以及如何使用工厂实例化的HTTP 客户端正确地使用它们。该章介绍ASP.NET Core 6 中引入的最小API,这种API 减少了实现简单Web 服务时需要的代码行数。

第16 章介绍如何使用Blazor 构建Web 用户界面组件,这些组件既可以在服务器端执行,又可以在Web 浏览器中执行。该章还讨论Blazor 服务器和Blazor WebAssembly 的区别,以及如何构建能够更容易地在这两种托管模型之间进行切换的组件。

结语针对进一步学习C#和.NET 提供了一些选项。

附录A 中提供了各章练习的解决方案(在线提供)。

要做的准备工作

可在许多平台上使用Visual Studio Code 和命令行工具开发和部署C#和.NET 应用程序,包括Windows、macOS 和各种Linux 发行版。只需要一个支持Visual Studio Code 和互联网连接的操作系统就可以学习本书的内容。

如果更喜欢在Windows 或macOS 上使用Visual Studio 2022,或者使用像JetBrains Rider 这样的第三方工具,那么也可以使用。

下载示例代码、彩色图片、附录A

本书代码可通过扫描封底的二维码进行下载,也可从GitHub 存储库中获取。书中的一些屏幕截图和图表用彩色效果可能更佳,为此,我们专门制作了一份PDF 文件,读者可通过封底二维码下载该文件。另外,本书在线提供的附录A 给出了各章练习的答案,读者也可通过扫描封底的二维码进行下载。

相关图书

《Linux运维之道(第3版)》
从运维工作的实际需求出发,从运维工作中的应用服务入手,全面讲解Linux操作系统及各种软件服务的运维方案。
《游戏运营与发行:从入门到实践》
来自一线的游戏运营与发行实战经验,一本关于游戏运营与发行的百科全书
现代C++编程实战:132个核心技巧示例(原书第2版)
掌握C++编程新技能,提升实战水平
《C++20高级编程 AI芯片开发 编译器基础》
主要讲解C++库、框架开发中的高级编程技术,以及新的C++20标准特性。

暂无评论

暂无评论...