CS.SWITCH.DEFAULT.POSITION

デフォルトのラベルは switch ステートメントの最初または最後のラベルとして表示されていません。

デフォルトのラベルが switch ステートメントの最初または最後にありません。

脆弱性とリスク

デフォルトのラベルが switch ステートメントの最初または最後に配置されていない場合、保守性が損なわれたり、誤ったコーディングによって意図しない動作が発生する場合があります。

軽減と防止

switch ステートメントの最初または最後にデフォルトのラベルを配置します。

コピー
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;
  
  namespace kmcustom
  {
      class C03
     {
         /* default located at first */
         public void testOK1(int num)
         {
             switch (num)
             {
                 default: //OK
                     break;
                 case 1
                     break;
                 case 2
                     break;
 
             }
         }
 
         /* default located at last */
         public void testOK2(int num)
         {
 
             switch (num)
             {
                 case 1
                     break;
                 case 2
                     break;
                 default: //OK
                     break;
             }
         }
 
 
         /* default located in the middle */
         public void testNG1(int num)
         {
             switch (num)
             {
                 case 1
                     break;
                 default://NG
                     break;
                 case 2
                     break;
             }
 
         }
 
         /* no default */
         public void testNG2(int num)
         {
             switch (num) //NG
             {
                 case 1
                     break;
                 case 2
                     break;
             }
 
         }
 
     }
 }