在 C# 中,判断结构主要通过 if 语句和 switch 语句实现,用于根据条件执行不同的代码逻辑。以下是详细说明:
- if 语句
基本语法:
if (condition)
{
// 当条件为 true 时执行的代码
}
示例:
int num = 15;
if (num > 10)
{
Console.WriteLine("数字大于 10");
}
- if-else 语句
语法:
if (condition)
{
// 条件为 true 时执行
}
else
{
// 条件为 false 时执行
}
示例:
int age = 18;
if (age >= 18)
{
Console.WriteLine("已成年");
}
else
{
Console.WriteLine("未成年");
}
- else if 链式判断
用于多个条件分支:
if (condition1)
{
// 条件1为 true 时执行
}
else if (condition2)
{
// 条件2为 true 时执行
}
else
{
// 其他情况执行
}
示例:
int score = 85;
if (score >= 90)
{
Console.WriteLine("A");
}
else if (score >= 80)
{
Console.WriteLine("B"); // 输出 B
}
else
{
Console.WriteLine("C");
}
- switch 语句
适用于多个固定值的分支判断。
基本语法:
switch (expression)
{
case value1:
// 当 expression 等于 value1 时执行
break;
case value2:
// 当 expression 等于 value2 时执行
break;
default:
// 默认情况
break;
}
- switch 表达式(C# 8.0+)
更简洁的语法,适合返回值:
var result = day switch
{
"Monday" => "工作日开始",
"Friday" => "周末临近",
_ => "其他天" // 默认分支
};
Console.WriteLine(result);
- 模式匹配(C# 7.0+)
支持类型检查和条件组合:
object obj = 42;
switch (obj)
{
case int i when i > 0:
Console.WriteLine($"正数: {i}");
break;
case string s:
Console.WriteLine($"字符串: {s}");
break;
default:
Console.WriteLine("未知类型");
break;
}
关键注意事项
条件类型:if 的条件必须是 bool 类型(C# 不允许隐式转换,如 if(1) 会报错)。
case 穿透:C# 的 switch 默认不支持隐式穿透,必须使用 break 或 return 终止。如需穿透,需显式使用 goto case:
case 1:
Console.WriteLine("Case 1");
goto case 2;
case 2:
Console.WriteLine("Case 2");
break;
性能:switch 在多个固定值判断时通常比 if-else 链更高效。
选择建议
使用 if:条件复杂或需要范围判断时(如 x > 5 && x < 10)。
使用 switch:针对同一变量的多个固定值匹配时(如枚举、字符串或整数)。