首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用三元操作符编写多个语句?

如何用三元操作符编写多个语句?
EN

Stack Overflow用户
提问于 2014-08-08 10:01:44
回答 3查看 3.2K关注 0票数 5

我张贴这个问题是因为我在这类帖子上没有发现类似的东西。我正在学习三元操作符。我想执行如下所示的操作:

代码语言:javascript
复制
  bool Divisible = false;
  foreach (var Number in NumberList))
  {
    var  Number = 242;
    if ((Number %= 2) | (Number %= 6))
    {
       Divisible = true;
    }
    else
    {
       Divisible = false;
    }
  }

我们可以使用这样的三元运算符来写这个:

代码语言:javascript
复制
var Divisible = (Number %= 2 | Number %= 6) ? false : true ;

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

代码语言:javascript
复制
  bool Divisible = false;
  foreach (var Number in NumberList))
  {
    var  Number = 242;
    if ((Number %= 2) | (Number %= 6))
    {
       Divisible = true;
    }
    else
    {
       Divisible = false;
       break;
    }
  }

我们如何用多条语句来编写三元操作符?请分享你对三元操作符的认识。

EN

回答 3

Stack Overflow用户

发布于 2014-08-08 10:07:06

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

如果语句无关,则不使用条件运算符。就像你已经用过的一样。

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

通常,只有当您想要根据条件在两个值之间分配之一时才使用条件运算符。对于任何其他的东西,您都应该使用一个常规的if-else构造。不要试图将条件运算符硬塞到任何决策代码中,因为您经常会发现自己遇到了类似这个问题的问题。

票数 5
EN

Stack Overflow用户

发布于 2014-08-08 10:08:33

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

您可以在这里更多地了解三元操作符的工作方式,?:运算符(C#参考)

同样,对于原始代码,只需执行以下操作:

代码语言:javascript
复制
var Divisible = !(Number %= 2 | Number %= 6)
票数 1
EN

Stack Overflow用户

发布于 2017-12-16 01:08:28

这可以说是一个令人震惊的坏主意,但您可以在返回赋值所需类型的三元操作符中调用方法。例如

代码语言:javascript
复制
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";
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25200848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档