07-条件判断
条件判断是编程中非常重要的逻辑控制手段,用于根据不同的条件执行不同的代码。在 C# 中,常用的条件判断语句包括 if-else、switch 和三元运算符。
1. if-else 语句
if-else 是最基本的条件判断语句,基于布尔表达式的结果(true 或 false)执行不同的代码块。
语法:
if (条件)
{
// 条件为 true 时执行的代码
}
else if (其他条件)
{
// 其他条件为 true 时执行的代码
}
else
{
// 所有条件为 false 时执行的代码
}示例代码:
int number = 10;
if (number > 0)
{
Console.WriteLine("数字是正数");
}
else if (number < 0)
{
Console.WriteLine("数字是负数");
}
else
{
Console.WriteLine("数字是零");
}在这个例子中,判断 number 是正数、负数还是零,并根据条件执行不同的输出。
说明:
-
if 后面的括号内必须是一个布尔表达式。 -
else if 可以有多个,用于多个条件的判断。 -
else 是可选的,用于在所有条件都不满足时执行的代码块。
2. 嵌套 if 语句
if 语句可以嵌套在其他 if 语句内部,用于检查更复杂的条件逻辑。
语法:
if (条件1)
{
if (条件2)
{
// 当条件1和条件2都为 true 时执行的代码
}
}示例代码:
int number = 15;
if (number > 0)
{
if (number % 2 == 0)
{
Console.WriteLine("数字是正偶数");
}
else
{
Console.WriteLine("数字是正奇数");
}
}在这个例子中,首先判断 number 是否为正数,然后在这个条件为真时,进一步判断 number 是偶数还是奇数。
说明:
- 嵌套的
if 语句可以用于处理更复杂的多层条件。 - 嵌套层次不宜过深,避免影响代码可读性。
3. switch 语句
switch 语句用于对一个变量进行多值判断,适合于替代多重 if-else 语句。switch 语句中的每个 case 都代表一个可能的取值,并根据匹配的值执行对应的代码。
语法:
switch (变量)
{
case 值1:
// 当变量等于值1时执行的代码
break;
case 值2:
// 当变量等于值2时执行的代码
break;
default:
// 当变量不等于任何已定义的值时执行的代码
break;
}示例代码:
int day = 2;
switch (day)
{
case 1:
Console.WriteLine("星期一");
break;
case 2:
Console.WriteLine("星期二");
break;
case 3:
Console.WriteLine("星期三");
break;
default:
Console.WriteLine("无效的星期");
break;
}在这个例子中,switch 语句用于根据变量 day 的值选择不同的输出。
说明:
-
switch 语句中的case 必须是常量或字面量。 -
break 语句用于结束当前case,防止代码继续执行到下一个case。 -
default 是可选的,用于处理所有不匹配case 的情况。 -
switch 适合用于值有限且清晰的多分支判断。
4. 三元运算符(Ternary Operator)
三元运算符是一个简洁的条件判断表达式,用于在单行代码中实现简单的条件判断。它的形式类似于 if-else,但适合于返回一个值。
语法:
条件 ? 表达式1 : 表达式2;- 如果条件为
true,则执行表达式1; - 如果条件为
false,则执行表达式2。
示例代码:
int number = 10;
string result = number > 0 ? "正数" : "非正数";
Console.WriteLine(result); // 输出:正数在这个例子中,根据 number 是否大于零来决定 result 的值。
说明:
- 三元运算符适合用于简单的条件判断,能够使代码更加简洁。
- 不适合用于复杂的条件判断,以避免影响代码的可读性。
5. if 表达式简化
在 C# 中,部分简单的条件判断可以通过其他方式简化,以提高代码的可读性和简洁性。除了三元运算符,还有一些特殊用法,比如使用 && 和 || 等逻辑运算符。
5.1 使用逻辑运算符简化 if 条件
逻辑运算符 && (AND)和 || (OR)可以用于组合多个条件,使代码更简洁。通常用于简单的多条件判断,而不需要嵌套多个 if 语句。
示例代码:
int age = 25;
bool isAdult = age >= 18 && age <= 65;
if (isAdult)
{
Console.WriteLine("成年人");
}
else
{
Console.WriteLine("未成年或老人");
}在这个例子中,age 的判断可以使用逻辑 && 运算符合并为一个条件,避免多层 if 嵌套。
逻辑运算符:
-
&& (与):所有条件为true 时,表达式结果为true。 -
|| (或):只要有一个条件为true,表达式结果就为true。 -
! (非):将布尔值取反。
5.2 空合并运算符 ??
空合并运算符 ?? 用于简化对 null 值的处理。当第一个操作数为 null 时,返回第二个操作数。
示例代码:
string name = null;
string displayName = name ?? "未知用户";
Console.WriteLine(displayName); // 输出:未知用户如果 name 为 null,则 displayName 将取值为 "未知用户"。
说明:
- 空合并运算符特别适用于处理
null 值的默认值情况,避免冗长的if 检查。
5.3 空条件运算符 ?.
空条件运算符 ?. 用于安全地调用对象的成员,而无需显式检查对象是否为 null。如果对象为 null,则整个表达式返回 null,而不会引发 NullReferenceException。
示例代码:
Person person = null;
string name = person?.Name ?? "未知姓名";
Console.WriteLine(name); // 输出:未知姓名在这个例子中,person?.Name 只会在 person 不为 null 的情况下访问 Name 属性,避免了直接访问 null 对象导致的异常。
6. 总结
C# 提供了多种条件判断方式,适用于不同的编程场景。总结如下:
-
if-else 语句:用于基本的条件判断,适合简单和复杂的逻辑。 - 嵌套
if 语句:用于更复杂的多层条件检查,但应避免嵌套过深。 -
switch 语句:适用于多值判断,特别是当判断的值数量有限时,可以替代多重if-else。 - 三元运算符:适合简单的条件判断和赋值操作,简化代码结构。
- 逻辑运算符:用于组合多个条件,简化复杂的
if 判断。 - 空合并运算符
?? :用于处理null 值时的默认赋值,避免冗长的if-else 判断。 - 空条件运算符
?. :安全访问对象的成员,避免null 引发的异常。
熟练掌握这些条件判断语句与运算符能够使代码更加简洁、易读,同时也能提高代码的安全性。


