-4

可能吗?

例如:

z = something;
w = something else;

if (x == z && y == z){
   Do something;
} or if (y == w){
   Do something else;
or if...
or if...

基本上我想要的是一种更简单的写作方式:

if (x == z && y == z){
   Do something;
else if (x == z && y == w){
   Do something else;
if else...
if else...

不会每次都比较 x 和 z(这不是最明显的,比如使用多个 if,除非那是更简单的一个)

4

5 回答 5

6

听起来你只想嵌套 if/else。

if (x == z) {
    if (y == z) {
        ...
    } else if (y == w) {
        ...
    } else {
        ...
    }
} else {
   ...
}
于 2012-12-06T19:42:07.337 回答
2

首先检查x!=z

if (x != z)
{
  // maybe do nothing?
}
else if(y == z)
{
  // Do something;
}
else if (y == w)
{
}

或嵌套:

if (x == z)
{
  if(y == z){
    Do something;
  }
  else if (y == w){
  }
}
于 2012-12-06T19:43:28.973 回答
1
switch (expression)
{
   case constant-expression:
      statement
      jump-statement
   [default:
      statement
      jump-statement]
}
于 2012-12-06T19:40:23.450 回答
0

只需切换比较的顺序:

if (y == z && x == z)
{
   Do something;
}
else if (y == w && x == z)
{
   Do something else;
}
else if ...
else if ...

由于短路,x 只会在第一个条件为真时与 z 进行比较。

于 2012-12-06T19:40:48.267 回答
0

您可以进行一次比较并将结果保存在本地布尔变量中。然后在 if 语句中使用该布尔值。

bool b = (x==z);
if (b && y == z){
    Do something;
else if (b && y == w){
    Do something else;

不过,如果其他人推荐,我仍然会做嵌套。

于 2012-12-06T23:25:31.410 回答