2014-12-07 59 views
-3

我不知道我怎样才能缩短这些if语句:C#缩短2个相似的if语句

if (x == 0) 
{ 
    z = 7; 
    y = 7; 
} 
if (x == 7) 
{ 
    z = 7; 
    if (y != 7) 
    { 
     y = 7; 
    } 
} 

我觉得自己像一个三元就可以了,但我不知道如何实现它

+0

你不能用一个单一的三元,可以用2个ternarys做,因为三元无法做到“无”,并具有:所以我想我会添加它评估到一个值 – Akash 2014-12-07 20:48:26

+0

这个问题应该已经acctualy beeen问'代码审查' – t3chb0t 2014-12-07 20:49:08

+0

我认为你最好考虑使用||而不是三元操作符。 – VahidNaderi 2014-12-07 20:49:28

回答

11

这对我来说看起来够短:

if (x == 0 || x == 7) 
{ 
    y = z = 7; 
} 
2

一个if语句可能是您的示例中最好的。但有些问题可以通过switch语句更好地解决。使用三元将

switch(x) 
{ 
    case 0: 
    case 7: 
    y = z = 7; 
    break; 

} 
-3

 //variable initialization as needed. 
     y = (x == 0 || x == 7) ? 7 : y; 
     // y = (ConditionThatWouldReturnBool) True(?) doThisPart False(:) doThisPart 
     z = (x == 0 || x == 7) ? 7 : z; 
+0

你能解释一下为什么吗? – NoSaidTheCompiler 2014-12-07 20:59:00

+1

你破坏了OP的逻辑。如果条件为假,则将z设置为y。当条件错误时,OP没有改变任何变量。 – Blorgbeard 2014-12-07 21:00:08

+0

这是一个错字!如果它是假的,请保留'y'。不过,我可以看到我的z = y的问题。谢谢。 – NoSaidTheCompiler 2014-12-07 21:02:45