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

Posted

技术标签:

【中文标题】如何在三元运算符中编写多个语句?【英文标题】:How to write multiple statements in Ternary operator? 【发布时间】:2014-10-01 18:38:53 【问题描述】:

我发布此问题是因为我没有发现与此类帖子类似的内容。 我正在学习三元运算符。 我想执行如下所示的操作:

  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 语句的三元运算符? 请分享您对三元运算符的了解。

【问题讨论】:

"像这样:"像什么?您的问题似乎缺少某些内容。 为什么要使用三元运算符来处理并非设计用于和混淆代码的东西?使用 if-else 语句保持可读性,这没有什么问题。 每件事都有它自己的优点。在您的情况下,您别无选择,只能使用 if .. else 构造。 嘿BoltClock,谢谢你告诉我我错过了写三元语句。现在问题完成了。可以的话请指导。提前致谢。 :) 此代码无法编译,因为您在循环内重新分配了循环变量。另外,赋值运算符的用法是什么? 【参考方案1】:

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

如果语句不相关,则不要使用条件运算符。只需使用您已有的 if-else。

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

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

【讨论】:

【参考方案2】:

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

您可以在此处阅读有关三元运算符如何工作的更多信息?: Operator (C# Reference)

对于您的原始代码,您也可以执行以下操作:

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

【讨论】:

【参考方案3】:

这可以说是一个非常糟糕的主意,但是您可以调用三元运算符中的方法来返回分配正在寻找的类型。例如

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";
    

【讨论】:

以上是关于如何在三元运算符中编写多个语句?的主要内容,如果未能解决你的问题,请参考以下文章

js回顾,用if语句编写体重,用三元运算符编写标准体重实例

js回顾,用if语句编写体重,用三元运算符编写标准体重实例

如何使用 JavaScript 中的三元运算符更改函数中的 if else 语句?

如何在python中编写三元条件运算符? [复制]

三元条件运算符中的多个条件?

如何在返回数组的return语句中使用三元运算符