如何在三元运算符中编写多个语句

本文关键字:语句 运算符 三元 | 更新日期: 2023-09-27 18:17:00

我发布这个问题是因为我发现没有类似的关于这种类型的帖子。我正在学习三元运算符。我想执行如下所示的操作:

  bool Divisible = false;
  foreach (var Number in NumberList))
  {
    var  Number = 242;
    if ((Number %= 2) | (Number %= 6))
    {
       Divisible = true;
    }
    else
    {
       Divisible = false;
    }
  }

可以用三元操作符这样写:

var Divisible = (Number %= 2 | Number %= 6) ? false : true ;

但是如果在else块中有多个语句,那么该怎么办?

  bool Divisible = false;
  foreach (var Number in NumberList))
  {
    var  Number = 242;
    if ((Number %= 2) | (Number %= 6))
    {
       Divisible = true;
    }
    else
    {
       Divisible = false;
       break;
    }
  }
如何编写带有多个else语句的三元操作符?请分享你的三元运算符知识

如何在三元运算符中编写多个语句

但是如果在else块中有多个语句,那么该怎么办?

如果语句不相关,则不使用条件操作符。就像你已经有if-else语句一样。

在你的例子中,因为你的代码需要中断当且仅当Divisible设置为false,那么你不能使用条件运算符,即使你想破解它,因为break是一个语句,而不是表达式,因此不能作为条件运算符的一部分出现。

一般来说,只有当您想要根据条件决定分配两个中的一个时,才使用条件运算符。对于任何 else,您应该真正使用常规的if-else结构。不要试图将条件运算符硬塞到任何决策代码中,因为您会经常发现自己遇到这样的问题。

三元运算符(即"简写的if-else")仅用于根据布尔值计算两个语句中的一个。它不像它那样是一个流动控制结构;它实际上返回它执行的语句的结果。你不能用它来执行这样的代码。

你可以在这里阅读更多关于三元操作符是如何工作的:operator (c# Reference)

对于你的原始代码,你也可以这样做:

var Divisible = !(Number %= 2 | Number %= 6)

这可以说是一个非常糟糕的主意,但是您可以在三元操作符中调用返回赋值要查找的类型的方法。如

string doNotDoThis = yeahNah ? iToldYou(bad) : notToDoThis(idea);
// ...
string iToldYou(object thing)
    {
    // you can do stuff here with thing but seriously?
    return "yeahNah was yeah";
    }
string notToDoThis(object thing)
    {
    // you can do stuff here with thing but seriously?
    return "yeahNah was nah";
    }