我张贴这个问题是因为我在这类帖子上没有发现类似的东西。我正在学习三元操作符。我想执行如下所示的操作:
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 ;但是,如果在块中有多个语句,那么该怎么办呢?
bool Divisible = false;
foreach (var Number in NumberList))
{
var Number = 242;
if ((Number %= 2) | (Number %= 6))
{
Divisible = true;
}
else
{
Divisible = false;
break;
}
}我们如何用多条语句来编写三元操作符?请分享你对三元操作符的认识。
发布于 2014-08-08 10:07:06
但是,如果在else块中有多个语句,那么该怎么办?
如果语句无关,则不使用条件运算符。就像你已经用过的一样。
在您的情况下,由于您的代码需要中断当且仅当Divisible设置为false时,所以即使您想破解条件运算符,也不能使用条件运算符,因为中断是语句而不是表达式,因此不能作为条件运算符的一部分出现。
通常,只有当您想要根据条件在两个值之间分配之一时才使用条件运算符。对于任何其他的东西,您都应该使用一个常规的if-else构造。不要试图将条件运算符硬塞到任何决策代码中,因为您经常会发现自己遇到了类似这个问题的问题。
发布于 2014-08-08 10:08:33
三元运算符(即“速记if-else")只用于根据布尔值计算两个语句中的一个。它不像if那样是流控制结构;它实际上返回它执行的语句的结果。你不能用它来执行这样的代码。
您可以在这里更多地了解三元操作符的工作方式,?:运算符(C#参考)。
同样,对于原始代码,只需执行以下操作:
var Divisible = !(Number %= 2 | Number %= 6)发布于 2017-12-16 01:08:28
这可以说是一个令人震惊的坏主意,但您可以在返回赋值所需类型的三元操作符中调用方法。例如
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";
}https://stackoverflow.com/questions/25200848
复制相似问题