配列範囲外チェックはどうしていますでしょうか。普通に記述すると…

    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);
    }
まあもここまで簡素化されれば、関数化する必要すらなさそうですよね。