弃元模式使用下划线_忽略不需的值,避免未使用变量警告。在switch表达式中可基于类型匹配返回结果,如int _=>“整数”,string _=>“字符串”,_=>“其他”;在is表达式中判断类型无需赋值,如if(obj is int _);与变量模式不同,_不创建实际变量,多个_不冲突;同样适用于switch语句的case分支,提升代码清晰度。

在 C# 中,模式匹配中的弃元模式(discard pattern)使用下划线 _ 来忽略不需要的值。它告诉编译器你有意不使用某个值,避免产生未使用变量的警告。
弃元模式常用于 switch 表达式、switch 语句或 is 模式的条件判断中,当你只关心类型或结构而不关心具体值时:
string result = value switch
{
int _ => "这是一个整数",
string _ => "这是一个字符串",
_ => "其他类型"
};
这里的 _ 在每个分支中表示忽略匹配到的具体值,只根据类型进行判断。最后一个 _ 是“通配符”,匹配所有未处理的情况。
if (obj is int _)
{
Console.WriteLine("obj 是 int 类型");
}
这里只需要判断 obj 是否为 int 类型,不需要将其赋值给变量,用 _ 避免声明无用的临时变量。
如果你写 int temp,就会创建一个名为 temp 的变量,即使不用也会占用作用域。而使用 int _ 不会创建实际可用的变量,只是完成类型匹配。
多个 _ 在同一个作用域中不会冲突,因为它们都被视为“丢弃”。
同样适用于传统的 switch 语句:
switch (input)
{
case string _: Console.WriteLine("字符串"); break;
case double _: Console.WriteLine("浮点数"); break;
default: Console.WriteLine("其他"); break;
}
每个 _ 都表示你接受该类型,但不关心具体值。
基本上就这些。使用 _ 能让代码更清晰,表明你有意忽略某些值,同时保持模式匹配的简洁性。
以上就是C# 中的模式匹配弃元模式如何忽略值?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号