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);
}
}
}