C#10 和 .NET6 代码跨平台开发

5408fc87ecbe077c5916717aef98d7b3.png

零、前言

有数千页长的编程书籍,旨在成为 C# 语言、.NET 库、网站、服务、桌面和移动应用等应用模型的综合参考。

这本书不一样。它简洁明了,旨在成为一本轻快有趣的书,每一个主题都有实用的实践演练。总体叙述的广度是以某种深度为代价的,但如果你愿意,你会发现许多路标需要进一步探索。

这本书同时是一个逐步指导学习现代 C# 使用跨平台.NET 验证实践的指南,并简要介绍了可以使用它们构建的主要类型的实际应用。这本书最适合 C# 和.NET 的初学者,或者那些在过去使用过 C# 但在过去几年的变化中感觉落后的程序员。

如果您已经有过使用旧版本 C# 语言的经验,那么在第 2 章的第一节中,您可以查看新语言功能的表格并直接跳到它们。

如果您已经有了使用旧版本.NET 库的经验,那么在第 7 章的第一节打包和分发.NET 类型中,您可以查看新库功能的表并直接跳到它们。

我将指出 C# 和.NET 的酷的角落和陷阱,这样你就可以给同事留下深刻印象并快速提高工作效率。我认为你足够聪明,可以用谷歌搜索相关主题的解释,而不必包含在初级到中级指南中,因为该指南在印刷本中的空间有限。

在哪里可以找到代码解决方案

您可以通过以下链接从 GitHub 存储库下载分步指导任务和练习的解决方案:https://github.com/markjprice/cs10dotnet6 。

如果你不知道怎么做,那么我会在第 1 章的末尾给出如何做的说明,你好,C#!欢迎使用.NET!

这本书涵盖的内容

第一章你好,C#!欢迎使用.NET!是关于设置您的开发环境,并使用 Visual Studio 或 Visual Studio 代码创建使用 C# 和.NET 可能最简单的应用。对于简化的控制台应用,您将看到 C# 9 中引入的顶级程序功能的使用。为了学习如何编写简单的语言结构和库功能,您将看到.NET 交互式笔记本的使用。您还将了解一些寻求帮助的好地方,以及如何与我联系以获得有关某个问题的帮助,或通过 GitHub 存储库向我提供反馈以改进本书和未来版本。

*第 2 章**讲 C#*,介绍了 C# 的版本,并有表格显示了哪些版本引入了新功能。我将解释您每天编写应用源代码时使用的语法和词汇。特别是,您将学习如何声明和使用不同类型的变量。

第 3 章**控制流、转换类型和处理异常涵盖了使用运算符对变量执行简单操作,包括比较、编写决策代码、C# 7 到 C# 10 中的模式匹配、重复语句块以及类型之间的转换。它还包括在不可避免地发生异常时编写代码以防御性地处理异常。

第 4 章**编写、调试和测试函数是关于遵循不要重复自己(DRY原则,使用命令式和功能实现风格编写可重用函数。您还将学习如何使用调试工具跟踪和删除 bug,在代码执行时监视代码以诊断问题,并严格测试代码以删除 bug,确保在将其部署到生产环境之前的稳定性和可靠性。

第 5 章**使用面向对象编程构建您自己的类型,讨论了类型可以拥有的所有不同类型的成员,包括存储数据的字段和执行操作的方法。您将使用面向对象编程(OOP等概念,如聚合和封装。您将了解一些语言功能,如元组语法支持和out变量、默认文本和推断的元组名称,以及如何使用 C# 9 中引入的record关键字、init纯属性和with表达式定义和使用不可变类型。

第 6 章**实现接口和继承类,解释了使用 OOP 从现有类型派生新类型。您将学习如何定义运算符和本地函数、委托和事件、如何实现基类和派生类的接口、如何重写类型的成员、如何使用多态性、如何创建扩展方法、如何在继承层次结构中的类之间强制转换,随着可空引用类型的引入,C# 8 发生了巨大的变化。

第 7 章**打包和分发.NET 类型,介绍了.NET 的版本,并有表格显示哪些版本引入了新的库功能,然后展示了符合.NET 标准的.NET 类型以及它们与 C# 的关系。您将学习如何在任何受支持的操作系统(Windows、macOS 和 Linux 变体)上编写和编译代码。您将学习如何打包、部署和分发自己的应用和库。

第 8 章**使用常见的.NET 类型,讨论了允许代码执行常见实际任务的类型,如操作数字和文本、日期和时间、在集合中存储项目、使用网络和操作图像以及实现国际化。

第 9 章**涉及文件、流和序列化的内容包括与文件系统的交互、对文件和流的读写、文本编码以及 JSON 和 XML 等序列化格式,包括改进的System.Text.Json类的功能和性能。

第 10 章**使用实体框架核心处理数据,说明了使用名为实体框架核心**的对象关系映射(ORM技术对关系数据库(如 Microsoft SQL Server 和 SQLite)的读写 EF 核心**。您将学习如何定义映射到数据库中现有表的实体模型,以及如何定义可以在运行时创建表和数据库的代码优先模型。

第 11 章**使用 LINQ查询和操作数据,向您介绍了语言集成查询(LINQs)——语言扩展,它增加了处理项目序列的能力,并对其进行过滤、排序和投影到不同的输出中。您将了解并行 LINQ(PLINQ)和 LINQ 到 XML 的特殊功能。

第 12 章**使用多任务处理提高性能和可扩展性讨论了允许多个操作同时发生,以提高性能、可扩展性和用户生产力。您将了解async Main特性以及如何使用System.Diagnostics名称空间中的类型来监控代码,以衡量性能和效率。

第 13 章**介绍 C# 和.NET 的实际应用,向您介绍可以使用 C# 和.NET 构建的跨平台应用的类型。您还将构建一个 EF 核心模型来表示 Northwind 数据库,该数据库将在本书的其余章节中使用。

第 14 章**使用 ASP.NET Core Razor Pages 构建网站是关于学习在服务器端使用 ASP.NET Core 构建具有现代 HTTP 架构的网站的基础知识。您将学习如何实现称为 Razor Pages 的 ASP.NETCore 功能,它简化了为小型网站创建动态网页的过程,以及如何构建 HTTP 请求和响应管道。

第 15 章**使用模型-视图-控制器模式构建网站,是关于学习如何以易于单元测试和管理的方式与使用 ASP.NETCore MVC 的程序员团队构建大型复杂网站。您将了解启动配置、身份验证、路由、模型、视图和控制器。

第 16 章**构建和使用 Web 服务解释了使用 ASP.NETCore Web API 构建后端 REST 架构 Web 服务,以及如何使用工厂实例化的 HTTP 客户端正确使用它们。

第 17 章**使用 Blazor构建用户界面,介绍如何使用 Blazor 构建可在服务器端或客户端 web 浏览器内部执行的 web 用户界面组件。您将看到 Blazor 服务器和 Blazor WebAssembly 之间的区别,以及如何构建更易于在两个托管模型之间切换的组件。

三个额外的在线章节完成了这个丰收版。您可以在阅读以下章节和附录 https://static.packt-cdn.com/downloads/9781801077361_Bonus_Content.pdf :

第 18 章**构建和消费专业服务向您介绍了使用 gRPC 构建服务、使用 Signal 实现服务器和客户端之间的实时通信、使用 OData 公开 EF 核心模型以及在云中使用 Azure 功能响应触发器的托管功能。

第 19 章**使用.NET 毛伊岛构建移动和桌面应用,介绍如何为 Android、iOS、macOS 和 Windows 构建跨平台移动和桌面应用。您将学习 XAML 的基础知识,XAML 可用于定义图形应用的用户界面。

第 20 章**保护您的数据和应用是关于保护您的数据不被恶意用户使用加密查看,以及不被哈希和签名操纵或破坏。您还将了解身份验证和授权,以保护应用免受未授权用户的攻击。

附录**考试答案您的知识问题在每章末尾都有考试问题的答案。

这本书你需要什么

您可以在许多平台上使用 Visual Studio 代码开发和部署 C# 和.NET 应用,包括 Windows、macOS 和多种 Linux。

一个支持 VisualStudio 代码和 internet 连接的操作系统是完成除一章以外的所有章节所需的全部内容。

如果您喜欢使用 VisualStudioforWindows 或 macOS,或者像 JetBrains Rider 这样的第三方工具,那么您可以。

您需要 macOS 在第 19 章**中构建 iOS 应用,使用.NET MAUI构建移动和桌面应用,因为您必须拥有 macOS 和 Xcode 才能编译 iOS 应用。

下载本书的彩色图像

我们还为您提供了一个 PDF 文件,其中包含本书中使用的屏幕截图和图表的彩色图像。彩色图像将帮助您更好地了解输出中的更改。

您可以从下载此文件 https://static.packt-cdn.com/downloads/9781801077361_ColorImages.pdf 。

习俗

在本书中,您将发现许多文本样式可以区分不同类型的信息。下面是这些风格的一些例子,并解释了它们的含义。

CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。例如ControllersModelsViews文件夹包含 ASP.NETCore 类和要在服务器上执行的.cshtml文件

代码块设置如下:

// storing items at index positions 
names[0] = "Kate";
names[1] = "Jack"; 
names[2] = "Rebecca"; 
names[3] = "Tom";

当我们希望提请您注意代码块的特定部分时,会突出显示相关行或项目:

// storing items at index positions 
names[0] = "Kate";
**names[****1****] =** **"Jack"****;** 
names[2] = "Rebecca"; 
names[3] = "Tom";

任何命令行输入或输出的编写方式如下:

dotnet new console

粗体:表示一个新的术语、一个重要的单词,或者您在屏幕上看到的单词,例如,在菜单或对话框中。例如:“点击下一个按钮,您将进入下一个屏幕。”

重要的注释和指向进一步阅读的外部来源的链接显示在这样一个框中。

良好实践:关于如何像专家一样编程的建议如下。

注:通过阅读原文或者在浏览器中打开 https://csharp.apachecn.org/#/docs/cs10-dnet6-modern-cross-plat-dev/README

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux之tar命令使用总结

1、使用原因 刚才在linux平台需要安装Clion的时候,下载得到CLion-2016.3.2.tar.gz 这个gz的压缩文件,所以需要解压到当前文件夹 2、简单解压到当前文件 解压当前文件夹命令 tar -zxvf CLion-2016.3.2.tar.gz 效果如下 3、tar命令介绍 -c: 建立压缩档案 -x:解压 -t:…

体验 正式发布 的OSM v1.0.0 版本

2021年10月份发布了OSM 1.0 RC[1],在过去的几个月里,OSM 的贡献者一直在努力为 v1.0.0 版本的发布做准备。2022年2月1日,OSM 团队正式发布 1.0.0 版本[2]。OSM 从最初的发布到现在已经走了很长的路,团队继续专注于社区需要的关键和…

数据流图的画法

数据流图的画法 数据流图也称为数据流程图date flow diagram , DFD,是一种便于用户理解和分析系统数据流程的图形工具,他摆脱了系统和详细内容,精确的在逻辑上描写叙述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组…

MFC继承表

转载于:https://www.cnblogs.com/Lthis/p/4264967.html

linux之fdisk查看分区和mkfs.ext3删除分区和mount挂载和e2label添加卷标使用总结

一、使用fdisk、mkfs.ext3、和mount、e2lable的原因 有个分区挂载不上,然后需要格式化分区,还需要添加卷标 二、fdisk、mkfs.ext3、mount、e2lable命令介绍 1、fdisk命令介绍 1)、了解分区 分区是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做一个…

linux c之strncpy函数和strncmp函数最简单使用总结

1.原型声明: char * strncpy(char *dest,const char *src, size_t n); strncmp() 用来比较两个字符串的前n个字符,区分大小写,其原型为: int strncmp ( const char * str1, const char * str2, size_t n ); 若str1与str2的前n…

阻止你变现的,从来都不是开源许可证

文 | lola_chen出品 | OSC开源社区(ID:oschina2013)之前,《GPL 转闭源?法院判决:一日 GPL 终身 GPL》一文提出一个冷门却又重要的知识点:GPL 许可证之下的开源项目,可以分叉出来闭源…

03-递归

数据结构和算法 基于《算法图解》—Aditya Bhargava和《数据结构》—严蔚敏 第3章 递归 3.1 递归 假设在一堆嵌套的盒子里找钥匙,对比循环和递归。 使用循环解决: #使用while循环:只要盒子堆不是空,就从中取出一个盒子&#x…

linux c之提示format‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat

1、问题 有个long int data;我输出的时候printf("data is %d", data);出现下面警告 自己竟然不知道 长整型怎么打印出来,日了狗。 2、解决办法 md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大…

Asp.Net Core部署:早知道,还是docker!以及一点碎碎念

前言AspNetCore技术栈在我们团队里的使用也有一段时间了,之前的部署方式一直是本地编译之后上传可执行文件到服务器,使用supervisor来管理进程这种很原始的方式。参考之前的文章:Asp.Net Core学习笔记:(五)…

04-快速排序

数据结构和算法 基于《算法图解》—Aditya Bhargava 和《数据结构》—严蔚敏 第4章 快速排序 4.1 分而治之 divide and conquer , 简称D&C:一种著名的递归式问题解决方法。 例子1: 假设你是农场主,有一小块土地。要求将这块地均匀地分…

android studio no marked region found along edge Found along top edge

由于种种原因,导致9图已经不是9图格式了,但是在Eclipse里面不会报错,在android studio 里面会报错 Error:9-patch image D:\download\avatar-android-master\avatar-android-master\sample\src\main\res\drawable-hdpi\abc_list_divider_holo…

Linux下安装compsoer ,并使用composer安装laravel

为什么80%的码农都做不了架构师?>>> 1、composer安装 https://getcomposer.org/download/打开composer官网。根据提示linux下可以使用php安装。 php -r "copy(https://getcomposer.org/installer, composer-setup.php);" php -r "if (ha…

AspNetCore在docker部署时遇到一个小坑

哦吼之前刚说了尝试了使用docker来部署AspNetCore应用(Asp.Net Core部署:早知道,还是docker!以及一点碎碎念),结果这才刚上班就遇到问题了 …我这项目用的数据库是Oracle,之前直接运行没啥问题,…

05-散列表

数据结构和算法 基于《算法图解》—Aditya Bhargava 和《数据结构》—严蔚敏 第5章 散列表 假设你在一家杂货店上班。有顾客来买东西时,你得到一个本子中查找价格。如果本子的内容不是按字母顺序来排序的,你可能为查找苹果价格而浏览每一页&#xff0c…

疯狂ios讲义疯狂连载之实现游戏逻辑(2)

13.6.5 定义获取通道的工具方法这里所谓的通道指的是一个方块上、下、左、右4个方向上的空白方块图13.10显示了一个方块四周的通道。图13.10 方块四周的通道下面是获取某个坐标点四周通道的4个方法。程序清单codes/13/Link/Link/sources/board/FKGameService.m13.6.6 没有转折点…

linux之进程间通信--使用信号

一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号…

解决Maven工程中报 Missing artifact jdk.tools:jdk.tools

2019独角兽企业重金招聘Python工程师标准>>> 解决方法&#xff1a; 在pom.xml中添加如下依赖&#xff1a; <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>…

回到地球之后,这个男人创建了Ubuntu

文 | 大东出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;2002 年&#xff0c;莫斯科当地时间 4 月 25 日 9 时 26 分&#xff0c;满载着补给和 3 名宇航员的“联盟-TM 号”航天飞船在“联盟 U”火箭的推进下飞往国际空间站。同行的三人中&#xff0c;年…

Hadoop完全分子式环境搭建—问题及解决办法

Hadoop完全分布式环境搭建 ps:本人是按照尚硅谷的教程搭建的&#xff0c;版本hadoop2.7&#xff0c;centos版本6&#xff0c;一台主机&#xff0c;两台从机。 一&#xff0e;版本问题 1.尽量使用hadoop版本2&#xff0c;尽量不要使用最新版本3。因为会出现无法解决的问题&…