请演示三元运算符如何使用常规if / else块。例如:
Boolean isValueBig = value > 100 ? true : false;
答案 0 :(得分:29)
Boolean isValueBig = ( value > 100 ) ? true : false;
Boolean isValueBig;
if( value > 100 ) {
isValueBig = true;
} else {
isValueBig = false;
}
答案 1 :(得分:16)
三元操作和if / else之间的区别在于三元表达式是一个计算值的语句,而if / else则不是。
要使用您的示例,从使用三元表达式更改为if / else,您可以使用以下语句:
Boolean isValueBig = null;
if(value > 100)
{
isValueBig = true
}
else
{
isValueBig = false;
}
但在这种情况下,您的陈述与此相同:
Boolean isValueBig = (value > 100);
答案 2 :(得分:10)
当我不熟悉C ++时,我发现它有助于阅读这个结构如下:
Boolean isValueBig = if condition ? then x else: y;
(请注意,这不是有效的代码。这正是我训练自己阅读的内容。)
答案 3 :(得分:6)
Boolean isValueBig;
if (value > 100)
{
isValueBig = true;
}
else
{
isValueBig = false;
}
答案 4 :(得分:5)
Boolean isValueBig;
if(value > 100) { isValueBig = true; } else { isValueBig = false; }
答案 5 :(得分:5)
我从来不是三元运算符的粉丝,因为我觉得它很难阅读。正如它所发生的那样,Jon Skeet和他的书, C#in Depth 终于击中了这只老狗的头部,让它沉入其中。乔恩说,我解释说,把它想象成一个问题。
值> 100?
“是”:“不”
现在盲人可以看到。
希望这可以帮助你成为第二天性。
答案 6 :(得分:3)
引自?: Operator MSDN page,“条件运算符(?:)根据布尔表达式的值返回两个值中的一个。”
因此,您可以使用三元运算符返回的不仅仅是布尔值:
string result = (value > 100 ) ? "value is big" : "value is small";
答案 7 :(得分:2)
PHP示例
<?php
// Example usage for: Ternary Operator
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
// The above is identical to this if/else statement
if (empty($_POST['action'])) {
$action = 'default';
} else {
$action = $_POST['action'];
}
?>
“表达式(expr1)?(expr2):( expr3)评估为 expr2 ,如果 expr1 评估为 TRUE < / strong>和 expr3 如果 expr1 评估为 FALSE 。“
答案 8 :(得分:2)
错误的例子,因为你可以轻松写
Boolean isValueBig = value > 100 ? true : false;
为:
bool isValueBig = value > 100
除此之外,其他人都已经回答了这个问题。我不建议使用三元运算符来设置bool值,因为您评估的内容已经是布尔值。
我意识到这只是一个例子,但值得指出。
答案 9 :(得分:2)
确保不要在Java中混合使用true / false部分的类型。它会产生奇怪的结果: - (
答案 10 :(得分:1)
其他人已经回答了这个问题,但是你应该真正了解三元的用法,我的意思是不要这样做。
让我们假设您有一段代码,它应该为某些值的每个可能变体返回一个不同的对象,为简单起见,我们假设一个介于1和5之间的整数。您的代码如下所示:
if(i==1) {
return new ObjectOne();
} else if(i==2) {
return new ObjectTwo();
} else if(i==3) {
return new ObjectThree();
} else if(i==4) {
return new ObjectFour();
} else if(i==5) {
return new ObjectFive();
} else {
return new DefaultObject();
}
这很容易理解,但有点沉重。因为三元只是另一种编写if..else语句的方法,可以重构为
return (i==1) ? new ObjectOne() :
(i==2) ? new ObjectTwo() :
(i==3) ? new ObjectThree() :
(i==4) ? new ObjectFour() :
(i==5) ? new ObjectFive() : new DefaultObject();
它被称为嵌套三元。这是邪恶的,既然你知道它,请永远不要使用它。它似乎有其用途,如上面的情况,但很可能在现实生活中你需要在它失去可读性的地方使用它(想想用可变数量的参数改变配置等)。
奖金部门:永远不要在if()中设置属性值,只需看看:if(bool=true!=false) { .. }
答案 11 :(得分:0)
引自MSDN(在前一篇文章中提到)
string result =(value&gt; 100)? “价值很大”:“价值很小”;
可以理解为:
价值是否大于100?如果是,则字符串结果为“value is big”,如果为no,则字符串结果为“value is small”。