分类 C# 下的文章

C#10新特性之扩展的属性模式

C# 10 添加了扩展属性模式,以便更轻松地访问模式中的嵌套属性值。例如,如果我们在上面的 Person 记录中添加一个地址,我们可以通过以下两种方式进行模式匹配:

阅读剩余部分

C#10新特性之在解构中混合声明和变量

在 C# 10 之前,解构要求所有变量都是新的,或者所有变量都必须事先声明。在 C# 10 中,您可以混合:

int x2;
int y2;
(x2, y2) = (0, 1);       // Works in C# 9
(var x, var y) = (0, 1); // Works in C# 9
(x2, var y3) = (0, 1);   // Works in C# 10 onwards 

 

阅读剩余部分

C#10新特性之内插字符串改进

当我们在 C# 中添加内插字符串时,我们总觉得在性能和表现力方面,使用该语法可以做更多事情。

01 内插字符串处理程序

今天,编译器将内插字符串转换为对 string.Format 的调用。这会导致很多分配——参数的装箱、参数数组的分配,当然还有结果字符串本身。此外,它在实际插值的含义上没有任何回旋余地。

阅读剩余部分

C#10新特性之structs的改进

C# 10 为 structs 引入了功能,可在 structs (结构)和类之间提供更好的奇偶性。这些新功能包括无参数构造函数、字段初始值设定项、记录结构和 with 表达式。

01 无参数结构构造函数和字段初始值设定项

在 C# 10 之前,每个结构都有一个隐式的公共无参数构造函数,该构造函数将结构的字段设置为默认值。在结构上创建无参数构造函数是错误的。

阅读剩余部分

C#10新特性之对lambda表达式和方法组的改进

我们对 lambda 的语法和类型进行了多项改进。我们预计这些将广泛有用,并且驱动方案之一是使 ASP.NET Minimal API 更加简单。

lambda 的自然类型

Lambda 表达式现在有时具有“自然”类型。这意味着编译器通常可以推断出 lambda 表达式的类型。

到目前为止,必须将 lambda 表达式转换为委托或表达式类型。在大多数情况下,您会在 BCL 中使用重载的 Func<...> 或 Action<...> 委托类型之一:

阅读剩余部分