如何在三元运算符中编写多个语句
本文关键字:语句 运算符 三元 | 更新日期: 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";
}