增加堆栈大小 c#

Increase stack size c#

我的代码在随机位置将字符 'L' 生成到二维数组中,但我需要程序检查是否已经没有 'L',如果已经存在,程序应该通过流程再次的一代。但是问题来了,因为 Whosebugexception 出现了。有没有人知道如何更改我的代码,或者如何增加堆栈大小? (我必须提到,我已经尝试使用项目属性增加堆栈大小,但我没有链接器选项。而且我是编程新手,所以我不知道如何使用 editbin 或命令)。提前致谢。

编辑:

    public void Generate()
            {
                Fill();
                Fleet();
            }

     public void Fleet()
        {
            Ship2(Utility.R(1,9),Utility.R(1,9),Utility.R(4));
            Ship3(Utility.R(1,9),Utility.R(1,9),Utility.R(4));
            Ship3(Utility.R(1,9),Utility.R(1,9),Utility.R(4));
            Ship4(Utility.R(1,9),Utility.R(1,9),Utility.R(4));
            Ship5(Utility.R(1,9),Utility.R(1,9),Utility.R(4));
        }

 public void Ship2(int x, int y, int r)
        {
            if (r == 0)
            {
                CreateShip(x, y);
                CreateShip(x, (y + 1));
            }

            if (r == 1)
            {
                CreateShip(x, y);
                CreateShip(x, (y + -1));
            }
            if (r == 2)
            {
                CreateShip(x, y);
                CreateShip((x-1), (y));
            }
            if (r == 3)
            {
                CreateShip(x, y);
                CreateShip((x+1), (y));
            }
        }

 public void CreateShip(int x, int y)
        {
            if (x <= 9 && y <= 9 && x >= 0 && y >= 0)
            {
                if (Board[x, y] == 'L')
                {
                    Generate();
                }
                else
                {
                    Board[x, y] = 'L';
                }
            }
            else
            {
                Generate();
            }

        }

这是代码的重要部分。

你可以做的是:如果创建失败,传回一个布尔值,然后从头开始重试。

public void Generate()
{
    Fill();
    while(!Fleet())
    {
        // I assume Fill clears your board again?!
        Fill();
    }
}

public bool Fleet()
{
    return Ship2(Utility.R(1,9),Utility.R(1,9),Utility.R(4)) &&
           Ship3(Utility.R(1,9),Utility.R(1,9),Utility.R(4)) &&
           Ship3(Utility.R(1,9),Utility.R(1,9),Utility.R(4)) &&
           Ship4(Utility.R(1,9),Utility.R(1,9),Utility.R(4)) &&
           Ship5(Utility.R(1,9),Utility.R(1,9),Utility.R(4));
}

public bool Ship2(int x, int y, int r)
{
    if (r == 0)
    {
        return CreateShip(x, y) &&
               CreateShip(x, (y + 1));
    }

    if (r == 1)
    {
        return CreateShip(x, y) &&
               CreateShip(x, (y + -1));
    }

    if (r == 2)
    {
        return CreateShip(x, y) &&
               CreateShip((x-1), (y));
    }

    if (r == 3)
    {
        return CreateShip(x, y) &&
               CreateShip((x+1), (y));
    }

    return false;
}

public bool CreateShip(int x, int y)
{
    if (x <= 9 && y <= 9 && x >= 0 && y >= 0)
    {
        if (Board[x, y] == 'L')
        {
            return false;
        }
        else
        {
            Board[x, y] = 'L';
        }
    }
    else
    {
        return false;
    }

    return true;
}

注意:如果 CreateShip 的输入参数永远不会改变,这仍然不起作用。您现在不会看到任何异常,但 Generate 方法将永远不会完成。