# C# 三元（`?:`）运算符

> 原文： [https://www.programiz.com/csharp-programming/ternary-operator](https://www.programiz.com/csharp-programming/ternary-operator)

#### 在本文中，我们将学习 C# 三元运算符以及如何使用它来控制程序流。

三元[运算符](/csharp-programming/operators "C# Operators")替代`if...else`语句。 因此，在继续学习本教程之前，请先通过 [C# `if...else`语句](/csharp-programming/if-else-statement "C# if...else statement")（如果尚未这样做）。

三元运算符的语法为：

```cs
Condition ? Expression1 : Expression2;
```

三元运算符的工作方式如下：

*   如果`Condition`表示的表达式为`true`，则`Expression1`的结果由三元运算符返回。
*   如果为`false`，则返回`Expression2`的结果。

例如，我们可以替换以下代码

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

```

与

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

**为什么叫三元运算符？**

该运算符采用 3 个**操作数**，因此称为三元运算符。

* * *

## 示例 1：C# 三元运算符

```cs
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);
		}
	}
} 
```

当我们运行程序时，输出将是：

```cs
True
```

在上述程序中，`2`被分配给变量`number`。 然后，使用三元运算符检查`number`是否为偶数。

由于 2 是偶数，因此表达式（`number % 2 == 0`）返回`true`。 我们还可以使用三元运算符返回数字，字符串和字符。

代替将返回值存储在变量`isEven`中，我们可以直接将三元运算符返回的值打印为：

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

* * *

## 什么时候使用三元运算符？

三元运算符可用于用单行替换多行代码。 但是，我们不应过度使用它。

例如，我们可以替换以下`if..else if`代码

```cs
if (a > b)
{
	result = "a is greater than b";
}
else if (a < b)
{
	result = "b is greater than a";
}
else
{
	result = "a is equal to b";
}

```

只需一行代码

```cs
result = a > b ? "a is greater than b" : a < b ? "b is greater than a" : "a is equal to b";
```

如我们所见，使用三元运算符可以减少代码的长度，但是这使我们难以理解代码的逻辑。

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