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,一经查实,立即删除!

相关文章

文件权限

用户类型:管理员:0一般用户:1-65535系统用户1-499普通用户:500权限管理:owner,group属主:属组:其他:权限:read(读),write&…

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:…

jq取第一个子元素为select_【转】jquery如何获取第一个或最后一个子元素?

【转自】https://www.cnblogs.com/MUMO/p/5938483.html通过children方法,children("input:first-child")$(this).children("input:first-child").val();$(this).children("input:last-child").val();通过>选择器,$(&qu…

基于ASP.NET Core SignalR的流式传输

基于ASP.NET Core SignalR的流式传输SignalR概述SignalR是ASP.NET Core下非常流行的实现Web实时功能的库。微软再文档中列出了适合的应用场景:适合 SignalR 的候选项:需要从服务器进行高频率更新的应用。示例包括游戏、社交网络、投票、拍卖、地图和 GPS…

Leetcode: Palindrome Partition I II

题目一, 题目二 思路 1. 第一遍做时就参考别人的, 现在又忘记了 做的时候使用的是二维动态规划, 超时加超内存 2. 只当 string 左部分是回文的时候才有可能减少 cut 3. 一维动规. 令 cuts[i] 表示string[i, string.size()] 所需的切割数, 那么 状态转移方程为 cuts[i] min(cut…

FatMouse

时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1431 解决:641 题目描述:FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food…

linux之安装Clion和运行使用总结

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程 1、Clion的简单介绍 CLion是以IntelliJ为基础,专为开发C及C++所设计的跨平台IDE,可以在Windows、Linux及MacOS使用,这里我是在ubuntu 16.0.4基础上安装。 2、linux平台…

Tips

1.Unity\Editor\Data\Resources\ScriptTemplates 里的文件是Unity 生成文件的模板. 2.提示文件尾不一致.用VS打开Unity\Editor\Data\Resources\ScriptTemplates里的模板文件.文件->高级保存选项->Windows(CRLF) 3.Scene视图里选择Transform工具,按V可以通过Pivot对齐 4.N…

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

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

linux c之用命名管道实现进程通信

1、命名管道相关信息介绍 不是很了解命名管道先看这个篇博客 http://blog.csdn.net/u011068702/article/details/55102379 linux c之命名管道简单使用 博客介绍了创建管道的方法,这里还需要介绍 open函数和调用阻塞 FIFO文件也可以使用open调用来打开,mkfifo函数只是创建…

vue表格刷新数据_Vue.js+Layer表格数据绑定与实现更新的实例

一:先使用Vue.js绑定好数据与更新事件使用v-on绑定好事件,在事件里边直接把该行数据传递进去,在更新方法里边就可以直接取出需要更新的数据选择用户名学号班级操作{{item.UserName}}{{item.Number}}{{item.Class}}删除更新//实例化vue.js(用来给表格提供…

数据流图的画法

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

linux之自己总结学习linux的资源推荐

1、学习linux前辈的网站 安卓和linux网络编程 http://www.cnblogs.com/hnrainll/ IBM学习linux技术地址: https://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp 2、学习linux的途径,或者说过程 1、APUE再深读 – 尤其是进程,线程,IPC,套接字 2、 多…

01-算法简介

数据结构和算法 基于《算法图解》—Aditya Bhargava和《数据结构》—严蔚敏 ** 算法图解:(基于Python)* 第1章—算法简介 1.1 引言 算法是一组完成任务的指令。 1.2 二分查找(binary_search) 二分查找是一种算法,其输入是一个…

浏览器渲染机制面试_【前端面试必考题】页面渲染机制(一)

页面渲染机制这部分内容会分成两篇来进行讲解,这两篇里我们准备聊一下页面的渲染的过程,包括页面的加载、DOM 树的构建、CSSOM 树的构建、渲染树的构建和最后的渲染过程等。浏览器的渲染机制和网页的优化息息相关,只有知道了页面是怎么渲染出…

OpenJudge/Poj 1226 Substrings

1.链接地址: http://bailian.openjudge.cn/practice/1226/ http://poj.org/problem?id1226 2.题目: 总时间限制:1000ms内存限制:65536kB描述You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, s…

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)、了解分区 分区是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做一个…

Task+ConcurrentQueue多线程编程

队列&#xff08;Queue&#xff09;代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时&#xff0c;则使用队列。当您在列表中添加一项&#xff0c;称为入队&#xff0c;当您从列表中移除一项时&#xff0c;称为出队。ConcurrentQueue<T>队列是一个高效的…

怎样从一个手机上安两个不同版本的软件_怎么在一部手机上安装两个不同版本的微信?...

今天我们就向大家介绍一个非常简便的方法&#xff0c;帮助我们实现在Android智能手机将应用程序多开。1、安卓微信双卡方法&#xff1a;准备工作从上图我们可以看到&#xff0c;小编在自己的手机上已经安装了两个不同版本的微信。通常在自己的手机上安装同一应用程序时&#xf…