C# - 动态创建对象

时间:2018-06-12 13:18:41

标签: c# class object

我给出了一个带有1和0的nXn网格,并且如果0居住在单元格中,我只能向上或向右移动。我需要找到从左下角到达右上角的所有可能方法。为了实现这一点,我使用了一个在(0,0)处初始化的对象(Bot),其唯一的行为是向右看,而正好在它上面的单元格;如果它是0,那么它会在该可用单元格中创建一个新的Bot。

那么我如何实现这种创造性行为而不必再次明确地实例化该类呢?

到目前为止(map是一个二维数组):

using System;

namespace brancher
{
    public class Bot
    {
        public int row = 0;
        public int col = 0;
        public void startRoutine ()
        {
            if (row != 3 && col != 3) {
                if (Globals.map [row, col + 1] == 0) {
                    // This isn't right
                    Bot a = new Bot (row, col + 1);
                }
                if (Globals.map [row + 1, col] == 0) {
                    // This isn't right
                    Bot b = new Bot (row + 1, col);
                }
            }
                if (row == 3 && col == 3) {
                    Globals.count++;
                }
        }
        public Bot (int x, int y)
        {
            row = x;
            col = y;
            startRoutine ();
        }
    }
}
编辑:这不是家庭作业。这是一个挑战。修正了等号和标题。

1 个答案:

答案 0 :(得分:0)

 public class Bot
{
    public int row = 0;
    public int col = 0;
    public void startRoutine()
    {
        if (row != 3 && col != 3)
        {
            if (Globals.map[row, col + 1] == 0)
            {
                // Simply update the data, no need to create a new class
                this.Move(row, col + 1);
            }
            if (Globals.map[row + 1, col] == 0)
            {
                // Simply update the data, no need to create a new class
                this.Move(row + 1, col);
            }
        }
        if (row == 3 && col == 3)
        {
            Globals.count++;
        }
    }

    private void Move(int x, int y)
    {
        row = x;
        col = y;
        startRoutine();
    }
    public Bot(int x, int y)
    {
        row = x;
        col = y;
        startRoutine();
    }
}