内容纲要

编辑推荐

 在《C#入门经典:更新至C# 9和.NET 5》中,专家级作家Mark J.Price提供了开始编写C#应用程序所需的一切技能,适用于所有主流操作系统。

  本书使用当前更流行的Visual Studio Code编辑器开展编程任务,对上一版内容进行了全面的更新和扩展,新增了专门介绍如何使用Blazor构建Web用户界面的章节。

  本书分为三大部分。第一部分介绍C#基础知识,包括面向对象编程和新的C# 9.0语言特性,如顶级程序、面向目标类型的对象实例化以及使用了record关键字的不可变类型。第二部分介绍.NET API,用于执行管理和查询数据、监视和改进性能以及使用文件系统、异步流、序列化和加密等任务。第三部分介绍如何构建和部署跨平台的应用程序,例如使用ASP.NET Core构建Web应用程序和Web服务以及使用Xamarin.Forms构建移动应用程序。

  通过学习本书,读者将掌握使用C# 9.0和.NET 5创建网站、服务和移动应用所需的所有技能。

内容简介

主要特色

● 使用面向对象编程构建自己的类型

● 使用LINQ查询和操作数据

● 使用ASP.NET Core 5构建网站和服务

● 使用机器学习创建智能应用

● 使用Entity Framework Core和关系数据库

● 使用UWP和XAML开发Windows应用

● 使用Blazor框架构建丰富的Web应用体验

● 使用Xamarin.Forms为iOS和Android开发移动应用

作者简介

Mark J.Price拥有Microsoft Specialist: Programming in C#、MCSD和MCT等微软编程专家和培训专家认证,拥有20多年的编程和培训经验。

自1993年以来,Mark已经通过了80多项微软编程认证,并且擅长帮助他的学生通过这些认证。他的学生中既有经验丰富的编程专家,也有初学编程的中学生。2001年至2003年,Mark在微软美国总部工作,编写官方教学课件。当C#还处于早期的版本时,他的团队就编写了第一个C#培训课程。

在微软工作期间,Mark负责培训MCT(微软认证讲师),帮助他们以最快的速度掌握C#和.NET的新知识。

译者简介

叶伟民

● 广州.NET俱乐部主席

● 全国各地.NET社区微信群/联系方式名录维护者

● .NET并发编程实战》译者

● .NET内存管理宝典》合译者

● “神机妙算Fintech信息汇总”公众号号主

● 17年.NET开发经验

● 曾在美国旧金山工作

软件质量需要程序员和测试员一起来保证,书的质量同样如此。十分感谢来自以下.NET社区的试读者:

● 胶东.NET社区——陆楠

● 广州.NET俱乐部、微软MVP——周豪

● 广州.NET俱乐部、微软MVP——林德熙

● 广州.NET俱乐部——张陶栋

● 广州.NET俱乐部、微软Regional Director、微软MVP ——卢建晖

译者叶伟民拥有全国各地.NET社区微信群/联系方式名录,欢迎全国各地.NET开发者加入所在地区的.NET社区。

精彩书评

这本优秀书籍涵盖C# 9和.NET 5的各个方面,包含大量演示,讲解循序渐进。对于想学习C#的人士以及想要过渡到C# 9的富有经验的C#程序员而言,本书具有巨大价值。在此强烈推荐!

—— Jesse Liberty,Microsoft高级传道者

??“作者经过深思熟虑后耗费大量心血写成本书,字字句句都经过反复推敲,绝对物超所值!”

—— Antonio Sebastian

  如果想学习C#语言,本书是理想之选。本书讲解透彻、切题,开篇介绍C#基础知识,此后逐渐展开并深化,循序渐进地讲解高级主题,是你攻克C#城堡的利器。

“有了这本优秀书籍的指导,菜鸟也能高飞!”

—— Michael C. Gamble

  翻阅本书,顿觉眼前一亮,有相见恨晚之感。这本书将指引读者一步一个脚印地前行:首先安装Visual Studio Code及其扩展,然后创建一个C#应用程序,并在示例的引导下理解C#术语和概念,选择最恰当的工具。

  第4章介绍与测试相关的内容,第9章讲述如何处理文件、流和序列化,第21章分析如何构建跨平台的移动应用程序;这3章尤为精彩。

“内容完整,是初学者的良师益友!”

—— dan resnic

  我正从Python转向C#。我的多位同事看过本书的上一版,赞不绝口;我决定购买本书,一睹为快。本书编排巧妙,示例丰富,还提供了一些额外资源,可扩展到任何你想深入研究的领域。

  总之,阅读本书是一次精彩的旅程,难怪如此畅销。

“C# 9和.NET 5编程书籍中的翘楚,写作质量一流!”

—— Aditya

  这是非常让人称赞的C#书籍。本书主线清晰,首先介绍编程基础知识,然后逐渐扩展到面向对象编程的高级概念;如果志在掌握C# 9和.NET 5,或者想从其他开发语言迁移到C#,本书将能发挥极大作用。本书还能帮你清晰地了解C#概念及编程范式。第16章“使用MVC模式构建网站”给出了简明扼要却又十分深刻的解释,令人印象深刻。

“优秀、完整且实用的C# 9和.NET 5书籍!”

—— Brian Barnett

  富有经验的开发人员可从本书快速了解全新信息,重温一些技术细节。本书涉及C#编程概念和应用开发的全部内容,涵盖ASP.NET Core网站的构建(使用Razor Pages和MVC)、Web API、Blazor服务器、Blazor WebAssembly、移动应用程序、桌面应用程序、与文件和数据库进行交互、ML.NET等,让你在C#学习之旅中快速前行。

  强烈建议你购买一本!

目录

第1章 C#与.NET入门 1

1.1 设置开发环境 1

1.2 理解.NET 6

1.3 使用Visual Studio Code构建控制台应用程序 12

1.4 从GitHub存储库下载解决方案代码 15

1.5 寻求帮助 16

1.6 实践和探索 19

1.7 本章小结 20

第2章 C#编程基础 21

2.1 介绍C# 21

2.2 了解C#基本知识 26

2.3 使用变量 32

2.4 处理空值 42

2.5 深入研究控制台应用程序 46

2.6 实践和探索 52

2.7 本章小结 54

第3章 控制程序流程和转换类型 55

3.1 操作变量 55

3.2 理解选择语句 61

3.3 理解迭代语句 66

3.4 类型转换 68

3.5 实践和探索 78

3.6 本章小结 81

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

4.1 编写函数 82

4.2 在开发过程中进行调试 92

4.3 在开发和运行时进行日志记录 97

4.4 单元测试函数 102

4.5 实践和探索 105

4.6 本章小结 106

第5章 使用面向对象编程技术构建自己的类型 107

5.1 面向对象编程 107

5.2 构建类库 108

5.3 在字段中存储数据 112

5.4 写入和调用方法 121

5.5 使用属性和索引器控制访问 128

5.6 模式匹配和对象 131

5.7 使用记录 134

5.8 实践和探索 136

5.9 本章小结 137

第6章 实现接口和继承类 138

6.1 建立类库和控制台应用程序 138

6.2 简化方法 140

6.3 触发和处理事件 143

6.4 实现接口 146

6.5 使类型可以安全地与泛型一起重用 151

6.6 使用引用类型和值类型管理内存 154

6.7 从类继承 158

6.8 在继承层次结构中进行类型转换 162

6.9 继承和扩展.NET类型 164

6.10 实践和探索 167

6.11 本章小结 168

第7章 理解和打包.NET类型 169

7.1 .NET 5简介 169

7.2 了解.NET组件 172

7.3 发布用于部署的应用程序 178

7.4 反编译程序集 182

7.5 为NuGet分发打包自己的库 185

7.6 从.NET Framework移植到.NET 5 189

7.7 实践和探索 192

7.8 本章小结 193

第8章 使用常见的.NET类型 194

8.1 处理数字 194

8.2 处理文本 196

8.3 模式匹配与正则表达式 199

8.4 在集合中存储多个对象 203

8.5 使用Span、索引和范围 209

8.6 使用网络资源 211

8.7 处理类型和属性 213

8.8 处理图像 218

8.9 国际化代码 219

8.10 实践和探索 221

8.11 本章小结 223

第9章 处理文件、流和序列化 224

9.1 管理文件系统 224

9.2 用流来读写 231

9.3 编码和解码文本 240

9.4 序列化对象图 243

9.5 实践和探索 249

9.6 本章小结 250

第10章 保护数据和应用程序 251

10.1 理解数据保护术语 251

10.2 加密和解密数据 253

10.3 哈希数据 257

10.4 签名数据 260

10.5 生成随机数 263

10.6 密码学有什么新内容 264

10.7 用户的身份验证和授权 265

10.8 实践和探索 270

10.9 本章小结 271

第11章 使用Entity Framework Core处理数据库 272

11.1 理解现代数据库 272

11.2 设置EF Core 276

11.3 定义EF Core模型 278

11.4 查询EF Core模型 287

11.5 使用EF Core加载模式 296

11.6 使用EF Core操作数据 299

11.7 实践和探索 303

11.8 本章小结 304

第12章 使用LINQ查询和操作数据 305

12.1 编写LINQ查询 305

12.2 使用LINQ处理集合 312

12.3 使用LINQ与EF Core 313

12.4 使用语法糖美化LINQ语法 320

12.5 使用带有并行LINQ的多个线程 322

12.6 创建自己的LINQ扩展方法 324

12.7 使用LINQ to XML 327

12.8 实践和探索 328

12.9 本章小结 329

第13章 使用多任务提高性能和可伸缩性 330

13.1 理解进程、线程和任务 330

13.2 监控性能和资源使用情况 331

13.3 异步运行任务 335

13.4 同步访问共享资源 341

13.5 理解async和await 346

13.6 实践和探索 349

13.7 本章小结 349

第14章 C#和.NET的实际应用 350

14.1 理解C#和.NET的应用模型 350

14.2 ASP.NET Core的新特性 352

14.3 理解SignalR 355

14.4 理解Blazor 356

14.5 构建Windows桌面应用程序和跨平台的移动应用程序 357

14.6 为Northwind示例数据库构建实体数据模型 358

14.7 本章小结 363

第15章 使用ASP.NET Core Razor Pages构建网站 365

15.1 了解Web开发 365

15.2 了解ASP.NET Core 368

15.3 了解Razor Pages 376

15.4 使用Entity Framework Core与ASP.NET Core 381

15.5 使用Razor类库 384

15.6 实践和探索 395

15.7 本章小结 396

第16章 使用MVC模式构建网站 397

16.1 设置ASP.NET Core MVC网站 397

16.1.1 创建和探索ASP.NET Core MVC

网站 397

16.1.2 审查ASP.NET Core MVC网站 399

16.1.3 回顾ASP.NET Core Identity

数据库 401

16.2 探索ASP.NET Core MVC网站 401

16.3 自定义ASP.NET Core MVC网站 410

16.4 使用其他项目模板 425

16.5 实践与探索 427

16.5.4 练习16.4:探索主题 427

16.6 本章小结 428

第17章 使用内容管理系统构建网站 429

17.1 了解CMS的优点 429

17.3 定义组件、内容类型和模板 451

17.4 测试Northwind CMS网站 461

17.5 实践和探索 465

17.6 本章小结 466

第18章 构建和消费Web服务 467

18.1 使用ASP.NET Core Web API构建Web服务 467

18.2 解释和测试Web服务 481

18.3 使用HTTP客户端消费服务 490

18.4 实现高级功能 494

18.5 了解其他通信技术 499

18.6 实践和探索 500

18.7 本章小结 501

第19章 使用机器学习构建智能应用程序 502

19.1 了解机器学习 502

19.2 理解ML.NET 504

19.3 进行产品推荐 507

19.4 实践和探索 521

19.5 本章小结 522

第20章 使用Blazor构建Web用户

界面 523

20.1 理解Blazor 523

20.2 使用Blazor服务器构建组件 532

20.3 使用Blazor WebAssembly构建组件 542

20.4 实践和探索 550

20.5 本章小结 551

第21章 构建跨平台的移动应用程序 552

21.1 了解XAML 552

21.2 了解Xamarin和Xamarin. Forms 554

21.3 使用Xamarin.Forms构建移动应用程序 557

21.4 在移动应用程序中消费Web

21.5 实践和探索 575

21.6 本章小结 576

附录部分(请扫描封底二维码获取)

附录A 练习题答案

附录B 构建Windows桌面应用程序

前言/序言

译 者 序

C# 9.0已于2020年11月10日正式发布,这一C#版本的主要落脚点放在数据的简洁性和不可变性方面。C# 9.0的新特性如下:

● init关键字

¨ 只初始化属性设置器

¨ init属性访问器和只读字段

● 记录类型

¨ with表达式

¨ 基于值的相等

¨ 继承

¨ 位置记录

● 顶级程序(Top-Level Program)

● 增强的模式匹配

¨ 简单类型模式

¨ 关系模式

● 类型推导的new表达式

● 返回值类型支持协变

● 本地大小的整型——nint和nuint

● 静态匿名方法

● 模块初始化器

● 本地函数支持Attribute

● 扩展的分部方法

● Lambda弃元参数

● 类型推导的条件表达式

● 方法指针

● 禁止发出localsinit标记

● 扩展了GetEnumerator以支持foreach循环

本书内容简洁明快、行文流畅,每个主题都配有实际动手演练项目。本书还是一本循序渐进的指南,可用于通过跨平台的.NET学习现代C#实践,书中还简要介绍可以使用它们构建的主要应用程序类型。本书分为21章,还包含两个附录,内容包括C#与.NET入门,C#编程基础,控制程序流程和转换类型,编写、调试和测试函数,使用面向对象编程技术构建自己的类型,实现接口和继承类,理解和打包.NET类型,使用常见的.NET类型,处理文件、流和序列化,保护数据和应用程序,使用Entity Framework Core处理数据库,使用LINQ查询和操作数据,使用多任务提高性能和可伸缩性,C#和.NET的实际应用,使用ASP.NET Core Razor Pages构建网站,使用MVC模式构建网站,使用内容管理系统构建网站,构建和消费Web服务,使用机器学习构建智能应用程序,使用Blazor构建Web用户界面以及使用Xamarin.Forms构建跨平台的移动应用程序。

本书适合C#和.NET初学者阅读,不要求读者具有任何编程经验;同时也适合使用过C#但感觉在过去几年自身技术已落伍的程序员;既可供软件项目管理人员、开发团队成员学习参考,也可作为高等院校计算机专业的教材或教学参考用书,甚至可作为通信、电子信息、自动化等相关专业的教材。

在这里要感谢清华大学出版社的编辑,他们为本书的翻译投入了巨大的热情并付出了很多心血。没有他们的帮助和鼓励,本书不可能顺利付梓。

对于这本经典之作,译者本着“诚惶诚恐”的态度,在翻译过程中力求“信、达、雅”,但是由于译者水平有限,失误在所难免,如有任何意见和建议,请不吝指正。

前 言

有些C#书籍长达数千页,旨在全面介绍C#编程语言和.NET Framework。

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

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

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

本书内容

第1章介绍如何设置开发环境,并通过C#和.NET,使用Visual Studio Code 创建最简单的应用程序。通过学习本章,你将了解如何在任何受支持的操作系统(Windows、macOS和Linux发布版)中编写和编译代码,对于简化的控制台应用程序,可以使用C# 9.0中引入的顶级程序功能。本章还介绍了可以从哪里寻求帮助。

第2章介绍C#的版本,并通过一些表介绍各个版本的新特性,然后解释C#日常用来为应用程序编写源代码的语法和词汇。特别是,你在本章将学习如何声明和处理不同类型的变量,以及C# 8.0中引入可空引用类型后带来的巨大变化。

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

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

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

第6章解释如何使用面向对象编程(OOP)从现有类派生出新的类。你将学习如何定义操作符、本地函数、委托和事件,如何实现关于基类和派生类的接口,如何覆盖类型成员以及使用多态性,如何创建扩展方法,以及如何在继承层次结构中的类之间进行转换。

第7章介绍.NET的版本,并给出了一些表来说明哪些版本引入了一些新特性,然后介绍与.NET Standard兼容的.NET类型以及它们与C#的关系。你将学习如何部署和打包自己的应用程序和库。

第8章讨论允许代码执行的实际任务的类型,例如操作数字和文本、在集合中存储对象以及实现国际化。

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

第10章探讨如何使用加密方法来保护数据不被恶意用户查看,使用哈希和签名防止数据被操纵或破坏。你将了解如何通过身份验证和授权来保护应用程序免受未授权用户的攻击。

第11章解释如何使用对象关系映射(Object Relational Mapping,ORM——技术名称是Entity Framework Core——来读写数据库,如Microsoft SQL Server和SQLite。

第12章介绍语言集成查询(LINQ)——LINQ扩展语言增加了处理项目序列、筛选、排序,以及将它们投影到不同输出的能力。

第13章讨论如何通过允许多个动作同时发生来提高性能、可伸缩性和用户生产率。你将了解async Main 特性以及如何使用System.Diagnostics名称空间中的类型来监视代码,以度量性能和效率。

第14章介绍可以使用C#和.NET构建的跨平台应用程序的类型。本章还将通过构建实体模型来表示Northwind数据库。Northwind数据库将贯穿使用于本书的第15~21章。

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

第16章讨论程序员团队如何利用ASP.NET Core MVC以一种易于进行单元测试和管理的方式构建大型、复杂的网站。你将了解启动配置、身份验证、路由、模型、视图和控制器。

第17章解释Web内容管理系统(Content Management System,CMS)如何使开发人员能够使用可定制的用户界面快速构建网站,非技术用户可以使用这一用户界面创建和管理自己的内容。你将构建一个简单的、基于.NET Core的开源网站,并将之命名为Piranha CMS。

第18章解释如何使用ASP.NET Core Web API构建后端REST体系结构Web服务,以及如何使用工厂实例化的HTTP客户端正确地使用它们。

第19章介绍ML.NET开源包中的机器学习算法,这些机器学习算法可用于把自适应智能嵌入任何跨平台的.NET应用程序,比如电子商务网站,从而为游客推荐能够添加到购物车中的商品。

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

第21章通过构建跨平台的iOS和Android应用程序来介绍C#移动平台。本章的应用程序可使用Visual Studio 2019 for Mac在macOS中进行构建。

附录A提供了各章练习的解决方案。

附录B除了介绍.NET 5及其Windows桌面包如何使Windows窗体应用程序和WPF应用程序在.NET 5上运行时受益之外,还介绍XAML的基础知识,从而为Windows Presentation Foundation (WPF)或Universal Windows Platform?(UWP)?图形应用程序定义用户界面。你将能够通过使用Fluent Design的原则和特性来点亮UWP应用程序。附录B中的应用程序只能使用Windows 10上的Visual Studio 2019来构建。

要做的准备工作

可在许多平台上使用Visual Studio Code 开发和部署C#和.NET应用程序,包括Windows、macOS和各种Linux发行版。拥有支持Visual Studio Code 和互联网连接的操作系统是学习第1~20章所必需的。

另外,第21章需要使用macOS来构建应用程序,拥有macOS和Xcode是编译iOS应用程序的必要条件。

在线资源

书中的一些截图用彩色效果可能更佳,因为这样有助于你更好地理解输出中的变化。为此,我们专门制作了一份PDF文件。读者可通过使用手机扫描封底的二维码来下载这份PDF文件,以及本书的附录、各章练习的解决方案等所有在线资源。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索