我发布这个问题,因为我发现这类帖子没什么相似之处。 我正在学习三元运营商。 我想执行如下所示的操作:
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语句编写三元运算符? 请分享您对三元运营商的了解。
答案 0 :(得分:4)
但是如果在else块中有多个语句那么该怎么办?
如果陈述不相关,那么您就不会使用条件运算符。只需使用你已经拥有的if-else。
在您的情况下,因为当且仅当Divisible
设置为false时,您的代码才需要中断,那么不能使用条件运算符,即使您想要将其破解,因为break是一个语句,而不是一个表达式,因此不能作为条件运算符的一部分出现。
通常,只有在根据条件决定分配两个值之一时,才使用条件运算符。对于任何 else,你应该使用常规的if-else结构。不要试图将条件运算符变成任何决策代码,因为你经常发现自己遇到了这样的问题。
答案 1 :(得分:0)
三元运算符("简写if-else")仅用于根据布尔值计算两个语句中的一个。它不像流程控制结构那样;它实际上返回它执行的语句的结果。你不能用它来执行这样的代码。
您可以阅读有关三元运算符如何在此处工作的更多信息?: Operator (C# Reference)
另外,对于原始代码,您可以执行以下操作:
var Divisible = !(Number %= 2 | Number %= 6)
答案 2 :(得分:0)
这可能是一个令人震惊的坏主意,但你可以在三元运算符中调用返回赋值所需类型的方法。例如
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";
}