在 C# 中,常量模式用于判断表达式的值是否等于某个特定的常量。这种模式通常出现在 switch 表达式 或 is 表达式 中,用来检查变量是否匹配指定的常量值。
基本语法与用法
常量模式的语法很简单:直接写一个常量值,比如数字、字符串、布尔值或枚举值。运行时会将目标表达式的值与此常量进行比较。
例如: 使用 is 表达式进行类型外的值判断:if (input is 42)
{
Console.WriteLine("输入的是 42");
}
在 switch 表达式中匹配字符串常量:string result = value switch
{
"red" => "红色",
"green" => "绿色",
"blue" => "蓝色",
_ => "未知颜色"
};
支持的数据类型
常量模式可以匹配多种类型的常量值:
整数(如 0、1、-1、42) 浮点数(如 3.14) 字符串(如 "yes"、"no") 布尔值(true、false) 枚举成员(如 Color.Red) null —— 特别常见,用于判断是否为空引用 示例:判断是否为 nullif (obj is null)
{
Console.WriteLine("对象为空");
}实际应用场景
常量模式在简化条件逻辑方面非常实用。
处理配置字符串或命令输入:string action = command switch
{
"start" => StartService(),
"stop" => StopService(),
"restart" => RestartService(),
_ => "无效指令"
};
结合 if 和 is 判断特殊状态值:
if (status is HttpStatusCode.NotFound)
{
// 处理 404
}
基本上就这些。常量模式不复杂,但能让你的代码更清晰,尤其是在做值判断时替代冗长的 == 比较。注意它只适用于可确定的常量,不能是变量或表达式。匹配过程基于类型的相等性规则,对于引用类型要小心字符串以外的引用比较问题。基本上就这些。
