跳到主要内容

C# 三元运算符(? :)

提示
  1. 三元运算符的基本使用:C# 中的三元运算符 ? :if...else 语句的简化形式,根据一个布尔条件表达式选择两个值中的一个。
  2. 语法和工作原理:三元运算符的语法为 条件 ? 表达式1 : 表达式2,其中如果条件为真,则结果为 表达式1,否则为 表达式2
  3. 适用场景和代码简洁性:三元运算符适用于替换简单的 if...else 语句,有助于缩短代码长度,但可能降低代码的可读性,因此应谨慎使用。

三元运算符是 if...else 语句的替代品。因此,在继续学习本教程之前,请先了解 C# if...else 语句(如果您还没有)。

三元运算符的语法是:

条件 ? 表达式1 : 表达式2;

三元运算符的工作原理如下:

  • 如果 条件 表达的表达式为 true,则三元运算符返回 表达式1 的结果。
  • 如果为 false,则返回 表达式2 的结果。

例如,我们可以用以下代码

if (number % 2 == 0)
{
isEven = true;
}
else
{
isEven = false;
}

替换为

isEven = (number % 2 == 0) ? true : false;

为什么它被称为三元运算符?

这个运算符接受 3 个操作数,因此被称为三元运算符。

示例 1:C# 三元运算符

using System;

namespace Conditional
{
class Ternary
{
public static void Main(string[] args)
{
int number = 2;
bool isEven;

isEven = (number % 2 == 0) ? true : false;
Console.WriteLine(isEven);
}
}
}

当我们运行程序时,输出将是:

True

在上述程序中,2 被赋值给变量 number。然后,使用三元运算符来检查 number 是否为偶数。

由于 2 是偶数,表达式(number % 2 == 0)返回 true。我们也可以使用三元运算符返回数字、字符串和字符。

我们可以直接打印三元运算符返回的值,而不是将返回值存储在变量 isEven 中,如下所示:

Console.WriteLine((number % 2 == 0) ? true : false);

何时使用三元运算符?

三元运算符可以用来用一行代码替换多行代码。然而,我们不应该过度使用它。

例如,我们可以用一行代码替换以下 if..else if 代码

if (a > b)
{
result = "a 比 b 大";
}
else if (a < b)
{
result = "b 比 a 大";
}
else
{
result = "a 等于 b";
}

替换为

result = a > b ? "a 比 b 大" : a < b ? "b 比 a 大" : "a 等于 b";

我们可以看到,使用三元运算符可能会减少代码的长度,但它使我们难以理解代码的逻辑。

因此,最好只使用三元运算符来替换简单的 if else 语句。