C# 中的模式匹配逻辑模式如何组合条件?

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

在 C# 中,模式匹配的逻辑模式可以通过 andornot 关键字组合多个条件,使判断更灵活简洁。这些逻辑操作符允许你在

switch
表达式、
is
模式或
when
子句中构建复杂的匹配逻辑。

使用 and 组合多个条件

当需要同时满足多个条件时,使用 and。例如判断一个对象是整数且值在某个范围内:

if (input is int number and >= 1 and <= 100)
{
    Console.WriteLine($"有效数字: {number}");
}

这个例子中,只有当 input 是 int 类型,并且值大于等于 1 且小于等于 100 时才会匹配。

使用 or 匹配任一条件

当你希望满足多个条件中的任意一个时,使用 or。比如判断输入是否为特定几个值之一:

if (value is string s and (s == "yes" or s == "y" or s == "true"))
{
    Console.WriteLine("用户同意");
}

这里用括号将多个 or 条件分组,确保逻辑清晰。

使用 not 排除特定情况

not 可以用来否定某个模式,常用于排除某些值:

if (obj is not null)
{
    Console.WriteLine("对象不为空");
}

这比写

obj != null
更符合模式匹配风格。也可以结合其他模式使用:

if (input is string str and not "")
{
    Console.WriteLine($"非空字符串: {str}");
}

在 switch 表达式中组合逻辑模式

switch 表达式也支持逻辑模式组合,适合处理复杂分支:

string result = value switch
{
    int i and < 0 => "负整数",
    int i and >= 0 => "非负整数",
    string s and (s.Length > 0) => "非空字符串",
    null => "空值",
    _ => "其他类型"
};

每个分支都可以使用 and、or、not 构建精细的判断条件。

基本上就这些。C# 的逻辑模式让条件判断更直观,减少嵌套 if,代码更易读。关键是理解 and 表示“都满足”,or 表示“任一成立”,not 表示“取反”,再合理使用括号控制优先级即可。

相关推荐