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技术站