C# 12 预览版新功能现已可用

C# 12 新特性预览

上个月,微软在发布 Visual Studio 17.7 Preview 3 的同时,推出了 C# 12 的新预览功能。C# 12 将成为 .NET 8 的默认语言版本,预计在今年晚些时候正式发布。

主要新特性

1. 内联数组(Inline Arrays)

内联数组是一种用于提升应用性能的高级语言特性,特别适用于高性能场景。它们允许开发者在结构体中声明固定大小的数组。虽然开发者可能不常直接声明内联数组,但在使用运行时 API 时,会以 System.Span<T>System.ReadOnlySpan<T> 的形式无缝接触到它们。

内联数组的定义方式如下:

[System.Runtime.CompilerServices.InlineArray(10)]
public struct CharBuffer
{
    private char _firstElement;
}

内联数组的结构体必须满足以下条件:

  • 数组长度必须大于零。
  • 目标类型必须是结构体。

内联数组的访问方式与普通数组类似,支持读取和写入操作,并且可以使用范围(range)和索引(index)操作符。

2. 拦截器(Interceptors)

拦截器是 C# 12 的一个实验性编译器功能,仅在预览模式下可用。拦截器允许在编译时无缝替换对可拦截方法的调用,转而调用拦截器方法。这一功能通常通过源生成器实现,目的是修改现有代码而非仅仅添加新代码。

要使用拦截器功能,需在项目文件中显式设置 <Features>InterceptorsPreview</Features>

3. 其他新特性

  • 主构造函数(Primary Constructors):自 C# 9 引入的主构造函数不再仅限于 record 类型,现在可以在任何 classstruct 中使用。
  • Lambda 表达式的可选参数:C# 12 允许在 Lambda 表达式中使用可选参数。
  • using 别名指令:现在可以使用 using 别名指令为任何类型的类型创建别名,而不仅仅是命名类型。

如何获取 C# 12

要体验 C# 12 的新特性,开发者需要安装最新版本的 Visual Studio 预览版(Windows)或 .NET 8 SDK(Windows、macOS 和 Linux),并在项目文件中将语言版本设置为 preview

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

更多关于 C# 12 新特性的详细信息,可以参考官方文档。

阅读 42
0 条评论