配列範囲外チェックはどうしていますでしょうか。普通に記述すると…
私は面倒なので、二次元配列の作成に同時に配列範囲チェック用のRectangleプロパティを作成しています。この例だと以下のような感じです。
このような記述になりますよね?
public int[,] array = new int[100, 100];
private bool IsArrayRange(int x, int y)
{
return true
&& x >= 0
&& y >= 0
&& x < array.GetLength(0)
&& y < array.GetLength(1);
}
私は面倒なので、二次元配列の作成に同時に配列範囲チェック用のRectangleプロパティを作成しています。この例だと以下のような感じです。
この矩形情報があれば、二次元配列の範囲チェックはこのような記述で出来ます。
public int[,] array;
public Rectangle rcArray;
private void InitArray(Size size)
{
array = new int[size.Width, size.Height];
rcArray = new Rectangle(Point.Empty, size);
}
private bool IsArrayRange(int x, int y) => IsArrayRange(new Point(x, y));
private bool IsArrayRange(Point pos)
{
return rcArray.Contains(pos);
}
まあもここまで簡素化されれば、関数化する必要すらなさそうですよね。
コメント