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
引发的异常。
熟练掌握这些条件判断语句与运算符能够使代码更加简洁、易读,同时也能提高代码的安全性。