10

C#で以下のようにSwitchステートメントに追加の条件を追加することは可能ですか

switch(MyEnum)
{ 
  case 1:
  case 2:
  case 3 && Year > 2012://Additional Condtion Here
       //Do Something here..........
      break; 
  case 4:
  case 5:
       //Do Something here..........
      break;  
 }

上記の例では、 MyEnum = 3の場合、Year > 2012の場合に実行する必要があります... 可能ですか?

[編集]

年 > 2012 は、ケース 1 とケース 2 には適用されません。

4

8 に答える 8

13

1と2のフォールスルーロジックで示したように機能させるには、その//do something here部分をメソッドまたは関数に移動してから、次のようにすることをお勧めします。

  case 1:
  case 2:
      DoSomething();
      break;
  case 3:
      if(Year > 2012) { DoSomething(); }
      break; 

他の選択肢は次のとおりです。

  case 1:
  case 2:
  case 3:
      if (MyEnum != 3 || Year > 2012) {
         // Do something here
      }
      break; 

しかし、最初のオプションははるかに直感的で読みやすいと思います。

于 2013-01-10T06:56:33.120 に答える
4

答えはノーだ。

次のものが必要です。

switch (MyEnum)
{
   case 1:
   case 2:
       DoSomething();
       break;
   case 3:
       if (Year > 2012) DoSomething();
       break;
}
于 2013-01-10T06:58:47.823 に答える
1

ケースに条件を追加することはできません。Case 節はコンパイル時の定数でなければなりません。代わりに、case ステートメント内で if ステートメントを使用できます。

case 3:
      if( > 2012)
       {
       //Do Something here..........
       }
break; 
于 2013-01-10T06:50:33.877 に答える
0

または、条件をスイッチに追加することもできます。

switch (MyEnum!=3 || Year>2012 ? MyEnum : -1)
{ 
  case 1:
  case 2:
  case 3:
       //Do Something here..........
      break; 
  case 4:
  case 5:
       //Do Something here..........
      break;  
 }
于 2013-01-10T07:12:06.990 に答える
0

case 内で if 条件を使用する必要があります。case ステートメントで && を使用することはできません。以下のように使用します。

switch(MyEnum)
{ 
  case 1:
  case 2:
  case 3: //Additional Condtion Here
  if (Year > 2012)
  {     
      //Do Something here..........
  }
  break; 
  case 4:
  case 5:
       //Do Something here..........
      break;  
 }
于 2013-01-10T06:53:04.353 に答える