如何在三元运算符中编写多个语句?
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";
【讨论】:
以上是关于如何在三元运算符中编写多个语句?的主要内容,如果未能解决你的问题,请参考以下文章