C# 中的模式匹配弃元模式如何忽略值?

来源:这里教程网 时间:2026-02-21 17:26:45 作者:

在 C# 中,模式匹配中的弃元模式(discard pattern)使用下划线 _ 来忽略不需要的值。它告诉编译器你有意不使用某个值,避免产生未使用变量的警告。

弃元模式的基本用法

弃元模式常用于 switch 表达式、switch 语句或 is 模式的条件判断中,当你只关心类型或结构而不关心具体值时:

switch 表达式 中忽略具体值:

string result = value switch
{
   int _ => "这是一个整数",
   string _ => "这是一个字符串",
   _ => "其他类型"
};

这里的 _ 在每个分支中表示忽略匹配到的具体值,只根据类型进行判断。最后一个 _ 是“通配符”,匹配所有未处理的情况。

is 表达式 中检查类型但不使用变量:

if (obj is int _)
{
   Console.WriteLine("obj 是 int 类型");
}

这里只需要判断 obj 是否为 int 类型,不需要将其赋值给变量,用 _ 避免声明无用的临时变量。

与变量模式的区别

如果你写 int temp,就会创建一个名为 temp 的变量,即使不用也会占用作用域。而使用 int _ 不会创建实际可用的变量,只是完成类型匹配。

多个 _ 在同一个作用域中不会冲突,因为它们都被视为“丢弃”。

在 switch 语句中的应用

同样适用于传统的 switch 语句:

switch (input)
{
   case string _: Console.WriteLine("字符串"); break;
   case double _: Console.WriteLine("浮点数"); break;
   default: Console.WriteLine("其他"); break;
}

每个 _ 都表示你接受该类型,但不关心具体值。

基本上就这些。使用 _ 能让代码更清晰,表明你有意忽略某些值,同时保持模式匹配的简洁性。

相关推荐