CS.METHOD.STRUCT.NO_REF_OUT

構造体型を伴うメソッドパラメーターに ref または out 指定子がありません。

型構造体のメソッド引数には、ref または out 修飾子が必要です。

脆弱性とリスク

デフォルトでは、構造体パラメーターは値で渡されます。参照で渡されることを意図した場合、期待と動作は異なります。

軽減と防止

明らかな理由がない限り、明確にするために、型構造体のメソッド引数には ref または out 修飾子が必要です。

コピー
  namespace kmcustom
  {
      public struct StCoOrds
      {
          public int x, y;
  
          public StCoOrds(int p1, int p2)
          {
              x = p1;
             y = p2;
         }
     }
 
     public class ClCoOrds
     {
         public int x, y;
 
         public ClCoOrds(int p1, int p2)
         {
             x = p1;
             y = p2;
         }
     }
 
 
 
     class C12
     {
         public void handleStructByValue(int i, ClCoOrds clcoords, StCoOrds stcoords) //NG
         {
 
 
         }
 
         public void handleStructByRef(int i, ref StCoOrds coords) //OK
         {
 
 
         }
 
         public void handleStructByOut(int i, out StCoOrds coords) //OK
         {
 
             coords = new StCoOrds(2, 5);
         }
 
 
     }
 }