C#-调用我在另一个类中创建的类

C#-调用我在另一个类中创建的类,c#,C#,我的程序中有3个类:程序、棋盘和方块。 在程序中,我正在创建一个新的板: class Program { static void Main(string[] args) { Board b = new Board(); } } 现在我正在寻找一种方法来调用我在Square类中创建的Board。 有人知道怎么做吗?(不在Square类中创建新板)。 编辑: 我正在尝试创建一个简单的扫雷游戏。 在Board类中,我有一个二维正方形数组。然后我在正方形阵列的每

我的程序中有3个类:程序、棋盘和方块。
在程序中,我正在创建一个新的板:

class Program
{
    static void Main(string[] args)
    {
        Board b = new Board();
    }
}
现在我正在寻找一种方法来调用我在Square类中创建的Board。
有人知道怎么做吗?(不在Square类中创建新板)。
编辑:
我正在尝试创建一个简单的扫雷游戏。
在Board类中,我有一个二维正方形数组。然后我在正方形阵列的每个部分创建一个新的正方形。然后,电路板使用Square类中的“AddMine”函数创建地雷。我删除了董事会选择将哪个正方形设置为矿山的方式

class Board
{
    public Square[,] board;
    public int n;

    public Board()
    {
        Console.Write("Enter the nuber of rows on column(int): ");
        n = int.Parse(Console.ReadLine());
        board = new Square[n, n];
        mines = (n * n) / 6;
        for (int row = 0; row < board.GetLength(0); row++)
        {
            for (int col = 0; col < board.GetLength(1); col++)
            {
                board[row, col] = new Square(row, col);
            }
        }
        board[row, col].AddMine();
    }
}
真正的问题是如何在正方形类中调用board类中的board数组?由于这种方法不起作用,我得到了一个“System.NullReferenceException”错误,我知道这是因为b被设置为“null”,但我不知道该怎么做才能在Program类中从Main中看到电路板。
我在互联网上找到的所有答案都是或设置一个新板,或在squarwe类中设置一个prorame类,但因为我在静态函数中设置一个新板,所以它不起作用。

感谢所有人的帮助,我希望现在问题更清楚。

使用传递对象引用作为方法中的参数,您可以实现所需的输出。以下是一个例子:

class Program
{
   static void Main(string[] args)
    {
       Board d=new Board();
       Square s=new Square();
       s.m1(d);
    }
}

class Board
{
   int x=10;
}

class Square
{
    public void m1(Board a)
    {
      Console.WriteLine(a.x);
    }
  Console.ReadLine();
}

正如许多人所说的,你需要把对董事会的引用传递到广场上。在你的例子中几乎都有,你只是没有通过董事会

下面是您的square类的外观

class Square
{
    public Board b;
    private int row, col;
    public int val;
    private bool open;
    public Square(Board board, int row, int col)
    {
        this.row = row;
        this.col = col;
        open = false;
        val = 0;
        **b = board;**    
    }
    public void AddMine()
    {
        #region set this to bomb (-9), nearby squars ++
        val = -9;
        b.board[row, (col + 1)].val++;
        #endregion
    }
}
您收到空引用异常,因为您从未实际设置board对象,因此在尝试使用它时它为空

然后编辑你的电路板示例,这是你添加新方块的方式

class Board
{
    public Square[,] board;
    public int n;

    public Board()
    {
        Console.Write("Enter the nuber of rows on column(int): ");
        n = int.Parse(Console.ReadLine());
        board = new Square[n, n];
        mines = (n * n) / 6;
        for (int row = 0; row < board.GetLength(0); row++)
        {
            for (int col = 0; col < board.GetLength(1); col++)
            {
                board[row, col] = new Square(this, row, col);
            }
        }
        board[row, col].AddMine();
    }
}
课程板
{
公众广场[,]委员会;
公共int n;
公共委员会()
{
Console.Write(“在列(int)上输入行数):”;
n=int.Parse(Console.ReadLine());
板=新正方形[n,n];
矿山=(n*n)/6;
for(int row=0;row
“this”键盘只是对调用对象的引用

这应该可以解决您的问题,但我应该指出,这通常不是最佳做法。看起来您正朝着紧密耦合类的方向前进,这很容易导致代码难闻且无法维护。您应该研究紧耦合与松耦合代码。一个快速的谷歌搜索找到了这篇文章

我没有看到“我在Square类中创建的板”。我只看到一个程序类。有不同的方法可以做到这一点。你试过什么?一般来说。。。将其传递给方法参数。Square类的代码在哪里?如果不想创建实例,可以创建
静态
方法创建
Square
类的实例时,通过方法或属性将
Board
的此实例传递给它。反之亦然。如果一个
Board
有64个
Square
s,它可能应该自己创建它们。^^或者使用一个单独的Board builder classI需要从整个类中访问数组,而不仅仅是在一个函数中(请参见我的adit)。当我试图按照您的建议在Square类中写入“b=Board;”时,我得到一个错误“名称‘board’在当前上下文中不存在”怎么办?无论如何,感谢您的帮助!您是否记得将其添加到构造函数中的参数中?public Square(board-board,int-row,int-col)我不知道为什么,但是当我重写您建议的内容时,它现在可以工作了。谢谢!
class Board
{
    public Square[,] board;
    public int n;

    public Board()
    {
        Console.Write("Enter the nuber of rows on column(int): ");
        n = int.Parse(Console.ReadLine());
        board = new Square[n, n];
        mines = (n * n) / 6;
        for (int row = 0; row < board.GetLength(0); row++)
        {
            for (int col = 0; col < board.GetLength(1); col++)
            {
                board[row, col] = new Square(this, row, col);
            }
        }
        board[row, col].AddMine();
    }
}