2015-04-17 81 views
-3

您好我有一个像使用三元运算符不使用转让或退回

bool isCompleted = true; 

if(isCompleted){x= 5} 

,所以我想用上面的代码中使用三元运算符的一个问题,而无需使用回报或分配如

isCompleted ? int x = 5 : <do nothing>; 

因此,它是可以使用三元运算符而不使用返回或赋值?

谢谢。

+1

您必须在某个表达式中存储或使用三元运算符的结果,否则我看不到使用三元运算符的要点。 – Adil

+0

你想做什么?三元操作员在这里完成什么?为什么,如果你坚持喜欢问号,不仅仅是:'x = isCompleted? 5:0;' – TZHX

+0

这段代码是示例代码,并且按照我的要求,我不想使用赋值(x),因为我只是想要这样:true?

回答

1

阅读关于三元操作的语法(MSDN):

条件运算符(:) 返回根据布尔表达式的值的两个值中的一个。

所以,你的代码必须rewriten为:

x = isCompleted ? 5 : 0; 
+0

Yoh Deadfall this code is sample code and作为我的要求,我不想使用赋值(x),因为我只是想要:true?

+0

使用'if'运算符:'if(isCompleted)x = 5;' –

+0

是的,这是最终的解决方案,但我想三元,所以我可以优化我的代码,无论如何谢谢 –

1

尝试使用这样的:

x = isCompleted ? intValue(if true) : intValue(if false); 

既然你已经宣布xint,你必须提供值无论评估的条件如何,都可以使用int。您使用的任何其他类型的值不会在这里工作。因此你写的false是错误的。您可能想要在那里提供int值。

如果您希望根据bool条件执行某些代码逻辑,则可能需要在此处使用if...else,因为这样可以帮助您做的不仅仅是将一些值分配给变量。

希望这会有所帮助。

+0

HarveySpecter this code是示例代码 和我的要求,我不想使用作业(x)作为 我只想︰ true?<做新逻辑>:

+0

如果你想执行一些逻辑,而不是只分配一些值到变量,你可能想使用'if'。这样,当if条件为真时,你可以执行任何你想要的逻辑,当它为假时不做任何事情。总之,使用简单的'if ... else'。 –

+0

是的,这是最终的解决方案,但我想三元,以便我可以优化我的代码,无论如何谢谢。 –

2

您需要布尔值之前的赋值。

x = isCompleted ? 5: 0; 

其次,你有一个类型错误。以上将设置X = 5,如果isCompleted = TRUE,否则将设置X = 0

isComplete ? 5 :false 

将无法​​编译,因为你不能一个布尔值赋给一个int。

+0

Jon 由于我不想使用这个赋值运算符 –

+0

可以理解。如果情况如下所示,那么if语句会更强。三级运营商很好,但有时候不合适。 – Jon

0

如果为true,您希望将x设置为5。否则保持x值?

x = isCompleted? 5:x: