C# 11新特性详解:插值字符串换行、列表模式与参数空值检查

追风的人
追风的人
发布时间:2026-10-15 | 4人浏览过
原创

C# 11 引入了多项提升开发体验的功能,包括允许内插字符串换行、新增列表模式匹配以及简化的参数空值检查。本文将逐一解析这些特性的语法与应用场景。

第1步:体验插值字符串中的自由换行

C# 6.0 引入了内插字符串(interpolated strings),其中非逐字字符串($"")通常不允许在文本中包含换行符,且这一限制曾延伸至插值表达式内部。这导致长表达式代码难以阅读。C# 11 移除了对插值表达式的换行限制,使多行格式化更加直观。

操作示例:在 C# 11 之前,以下写法会报错;在 C# 11 中,表达式可以随意换行而不影响编译。

var v = $"Count is\t: { this.Is.A.Really ()
                            .That.I.Should (
                                be + able)[
                                    to.Wrap ()] }.";

完成判断:代码能够成功编译运行,且在表达式内部实现了视觉上的分行对齐。

第2步:使用列表模式简化数组匹配

列表模式(List Patterns)提供了一种声明式的方式来匹配集合或数组结构。它使用方括号 [] 表示序列,配合切片操作符 .. 可以捕获或忽略中间元素。

适用条件:类型需具有可访问的 Length 或 Count 属性,以及支持 int 或 System.Index 索引器的索引器。

操作示例:利用 switch 表达式进行结构匹配。

public static int CheckSwitch (int[] values)
    => values switch
    {
        [1, 2, .., 10] => 1,    // 首尾固定,中间可变
        [1, 2] => 2,           // 精确长度匹配
        [1, _] => 3,           // 第二个元素任意但存在
        [1, ..] => 4,          // 以1开头,后跟任意数量元素
        [..] => 50             // 任何非空数组
    };

扩展用法:捕获切片内容。

public static string CaptureSlice (int[] values)
    => values switch
    {
        [1, .. var middle, _] => $"Middle {String.Join(", ", middle)}",
        [.. var all] => $"All {String.Join(", ", all)}"
    };

第3步:启用简化的参数空值检查

C# 11 引入了 !! 运算符,用于在方法参数定义处自动执行 null 检查并抛出 ArgumentNullException。

对比说明:

传统写法需要在方法体内编写样板代码:

public static void M (string s)
{
    if (s is null)
        throw new ArgumentNullException (nameof (s));
}

C# 11 极简写法:

public static void M (string s!!)
{
    // Body of the method
}

注意:对于构造函数,该检查发生在字段初始化之前。此功能有助于减少样板代码并提升安全性。

如何配置环境以试用上述特性

要尝试 C# 11 的预览特性,需在项目中显式指定语言版本。打开项目配置文件 .csproj,修改 <PropertyGroup> 如下:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <LangVersion>preview</LangVersion>
    </PropertyGroup>
</Project>

保存文件并重新生成解决方案即可生效。

以上就是C# 11新特性预览:内插字符串换行、列表模式与参数空值检查的详细内容,更多关于C# 11入门的知识请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表