C#9.0主要特性的一些想法

C# 9.0主要特性的一些想法

C# 9.0是Microsoft发布的最新版本的C#语言。本文将重点讲解C# 9.0的主要特性,包括以下内容:

  • 改进模式匹配
  • 新的init-only属性
  • 支持 Lambda 计算式中的 Discards
  • 函数成员中现在可以包含参数 null 性 注释
  • 函数和 ltc 参数中支持 调用链

改进模式匹配

模式匹配是C#的一个非常强大的特性,可以用于简化条件语句。C# 9.0进一步改进了模式匹配,现在支持以下特性:

  • 支持AND, OR,以及NOT运算符

示例:

if (a is int i and > 0) { ... }
if (a is null or string s) { ... }
if (a is not null) { ... }
  • 改进了switch表达式

现在可以用逗号分隔符对多个匹配进行分组。

string name = "Bob";
var result = name switch
{
    "Tom", "Dick", "Harry" => "Hello, guys!",
    "Maria", "Juan" => "Hola!",
    _ => "Hello!"
};
  • 引入“记录”语义

记录是一种新类型的数据结构,可以用于保存多个有关联的数据值。C# 9.0引入了这个概念。示例如下:

public record Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

新的init-only属性

C# 9.0引入了一个新的init-only属性,用于指定只有构造函数或初始化器可以为该属性赋值。

示例:

public class Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

支持 Lambda 计算式中的 Discards

Lambda 表达式是一个轻量级的匿名函数,很方便的使用,但是在以前的版本中,Lambda 计算式中的 Discards 无效,并且将会抛出一个错误。

C# 9.0中,Lambda 计算式中的 Discards 可以在代码块中使用。

示例:

List<int> list = new List<int> { 1, 2, 3, 4, 5 };
int sum = list.Sum(_ => 1);

函数成员中现在可以包含参数 null 性 注释

在以前的版本中,如果函数参数可能为 null,你可能在函数中添加一些额外的逻辑代码,使代码更加可靠。C# 9.0引入了新的 nullability 注释语法,从而使代码更加清晰地表达你的意图。

示例:

public void Foo(string? s)
{
   if (s is null) return;
   Console.WriteLine(s);
}

函数和 ltc 参数中支持 调用链

C# 9.0 引入了函数和 ltc 参数中支持 调用链特性。现在,你可以在函数调用的 API 之间定义一个点,这样可以使你的代码更加简易易读。

示例:

await httpClient.GetFromJsonAsync<Person>("https://localhost:5001/person/1")
    .WithHeader("Authorization", "Bearer " + accessToken)
    .ConfigureAwait(false);

总的来说,C# 9.0的新特性为我们的开发工作带来了更多的便利和方便。我们可以通过它们来编写更加安全、高效、易读和易维护的代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#9.0主要特性的一些想法 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • 微信小程序与AspNetCore SignalR聊天实例代码

    微信小程序与AspNetCore SignalR聊天实例代码 在本攻略中,我们将详细讲解如何使用微信小程序和AspNetCore SignalR实现聊天功能,并提供两个示例说明。 步骤一:创建AspNetCore SignalR应用程序 首先,我们需要创建一个AspNetCore SignalR应用程序。您可以使用Visual Studio创建一个新的Asp…

    C# 2023年5月17日
    00
  • asp.net GridView排序简单实现

    下面我将为你详细讲解“asp.net GridView排序简单实现”的完整攻略。 一、前置知识 在讲解排序实现前,我们需要先了解GridView控件的使用方法: 1. GridView的基本用法 GridView是asp.net中的一个非常常用的控件,一般用于展示数据表格。使用GridView控件展示数据非常方便。GridView控件有如下几个主要的属性: …

    C# 2023年5月31日
    00
  • .Net Core日志记录的核心机制

    .NET Core日志记录的核心机制 在.NET Core中,日志记录是一个非常重要的功能,可以帮助我们在应用程序中记录和跟踪事件。本攻略将介绍.NET Core日志记录的核心机制,并提供两个示例说明。 日志记录的核心机制 在.NET Core中,日志记录的核心机制包括以下几个部分: 1. ILogger ILogger是在.NET Core中记录日志的接口…

    C# 2023年5月17日
    00
  • MongoDB数据库介绍并用.NET Core对其进行编码

    MongoDB是一种文档数据库,它以BSON(二进制JSON)为数据存储格式,支持索引、联表查询和文档级锁定等特性。下面将为大家详细介绍MongoDB数据库,并提供两条.NET Core编码示例。 MongoDB数据库介绍 MongoDB的优点 数据以文档形式存储 BSON格式的数据存储格式 支持动态查询语言 可伸缩性强 可自身提供容错保护 支持二进制数据存…

    C# 2023年6月3日
    00
  • c#和avascript加解密之间的互转代码分享

    下面是详细的“c#和Javascript加解密之间的互转代码分享”的完整攻略。 什么是加解密? 加密是将明文转换成密文的过程,解密是将密文转换成明文的过程。这种加解密的过程是为了保证信息的安全性,防止敏感信息被窃听。 c#和Javascript加解密 在c#和Javascript中,通常使用对称加密算法和非对称加密算法进行加密和解密。 对称加密算法:使用同一…

    C# 2023年6月7日
    00
  • 如何在.Net 7中将Query绑定到数组详解

    以下是关于“如何在 .NET 7 中将 Query 绑定到数组”的完整攻略: 1. 问题描述 在 .NET 7 中,我们经常需要将 Query 绑定到数组。但是,由 .NET 7 中的一些更改,可能会导致以前的方法不再适用。因此,我们需要了解如何在 .NET 7 中将 Query 绑定到数组。 2. 解决方案 要将 Query 绑定到数组,可以使用以下步骤:…

    C# 2023年5月12日
    00
  • C++学习之Lambda表达式的用法详解

    C++学习之Lambda表达式的用法详解 在本文中,我们将详细介绍C++中Lambda表达式的用法和使用场景。 什么是Lambda表达式? Lambda表达式是一种在C++11标准中引入的新功能,它允许我们将一个函数作为一个变量来使用。Lambda表达式相当于一种无名函数,可以在需要的时候定义,并且和普通函数一样具有函数的特性,包括参数、返回值、局部变量等。…

    C# 2023年6月8日
    00
  • 详解如何通过C#/VB.NET调整PDF文档页边距

    请参考以下完整攻略: 1. 安装依赖库 要使用C#/VB.NET调整PDF文档页边距,我们需要使用一个PDF库来操作PDF文档。这里我们使用iTextSharp库来进行操作。在Visual Studio中打开项目,右键单击项目,然后选择“管理NuGet包”。在NuGet包管理器中搜索“iTextSharp”,然后离线安装。 2. 加载PDF文档 使用iTex…

    C# 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部