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日

相关文章

  • linq中的元素操作符

    LINQ中的元素操作符 LINQ(Language Integration Query)提供了许多强大的操作符,以便于我们对集合数据做各种各样的操作。在LINQ中,元素操作符(Element Operators)允许我们根据单个元素来访问或检查一个集合。 First First操作符返回序列中第一个元素,它也可以根据一个指定的条件筛选元素。如果序列为空,该操…

    C# 2023年6月1日
    00
  • C# DataGridView绑定数据源的方法

    下面为你提供C# DataGridView绑定数据源的方法的完整攻略。 方法一:通过设置DataGridView的DataSource属性来绑定数据源 准备好需要绑定的数据源,比如DataTable或者List。 //创建一个DataTable作为数据源 DataTable dt = new DataTable(); dt.Columns.Add(&quot…

    C# 2023年6月2日
    00
  • Unity通过脚本创建网格Mesh的方法

    当我们需要在Unity中动态创建网格(mesh)的时候,通常都是通过代码来实现。如何在脚本中创建网格呢?接下来,我将为大家详细介绍Unity通过脚本创建网格Mesh的方法,希望能帮到大家。 1. 基础网格Mesh的创建 以下是创建基础网格Mesh的步骤: 创建空GameObject作为网格物体的容器。 创建一个MeshFilter组件并将其附加到新GameO…

    C# 2023年6月3日
    00
  • jQuery调用RESTful WCF示例代码(GET方法/POST方法)

    jQuery调用RESTful WCF示例代码(GET方法/POST方法) RESTful WCF服务是一种用于构建分布式应用程序的技术。在Web应用程序中,我们可以使用jQuery调用RESTful WCF服务来实现与服务器的通信。本文将详细讲解如何使用jQuery调用RESTful WCF服务,并提供两个示例。 1. 创建RESTful WCF服务 以下…

    C# 2023年5月15日
    00
  • Winform开发框架中如何使用DevExpress的内置图标资源

    在Winform开发框架中使用DevExpress内置图标资源可以为我们的软件提供美观的界面效果和更好的用户体验。 下面是详细的攻略: 步骤一:添加DevExpress控件库 我们首先需要添加DevExpress控件库,可以通过在Visual Studio的工具箱中右键单击并选择“选项” -> “工具箱” -> “选择工具箱项” -> “D…

    C# 2023年6月3日
    00
  • .NET MemoryCache如何清除全部缓存

    清除.NET MemoryCache中全部缓存可以通过以下步骤来实现: 实例化MemoryCache对象 在.NET中,可以通过实例化MemoryCache类来创建缓存对象,如下所示: using System; using System.Runtime.Caching; MemoryCache cache = MemoryCache.Default; 删除…

    C# 2023年6月6日
    00
  • C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形的方法详解

    C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形的方法详解 什么是Office SmartArt? Office SmartArt 是微软Office套件中的一种图形类型,它可以帮助用户在较短的时间内创建具有高质量的信息图形。它的能力不仅限于流程图和组织结构图,还包括算法图、漏斗图、阶段图、矩阵图、金字塔图等不同种类的图形。 如何在C…

    C# 2023年6月3日
    00
  • 轻松学习C#的属性

    当您学习C#编程语言时,属性是一个重要的概念。属性可用于对类中的字段进行访问、设置和检查。通过使用属性,可以更好地组织代码并提高代码重用性。 什么是属性? 属性是一种C#编程语言中的特殊语法,它允许使用getter和setter方法对类中的字段进行访问、设置和检查。通过属性,可以在类外部访问私有字段,其本质上是对字段进行封装,确保对数据的访问是安全和可控的。…

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