【问题标题】:Cannot implicitly convert type 'string[,]' to 'string' when returning to main C#返回主 C# 时无法将类型“string[,]”隐式转换为“string”
【发布时间】:2012-08-13 17:35:56
【问题描述】:

哟。我是游戏开发的初学者,我正在制作一个控制台tictactoe游戏,我试图将棋盘网格从我的游戏的棋盘类传递到主类,因为我想把棋盘放在它自己的类中。我制作了一个二维数组来保存棋盘的字符,但我无法返回它,错误是“无法将类型 'string[,]' 隐式转换为 'string'。

private int maxRow = 3;
private int maxColumn = 3;
private string[,] boardGrid = new string[3, 3]; //create the game board grid

//Initialise board method
public string InitBoard () //make an object of the board class, returns a 2d array because the board is essentially a grid
{
     //initialise board
     for (int row = 0; row < maxRow; row++)
     {
          for (int column = 0; column < maxColumn; column++)
          {
               boardGrid [row, column] = ".";
          }
     }
     return boardGrid; //<---[The problem happens here!]
}

这是主类的代码。

public static void Main (string[] args)
{
    Board ticTacToeBoard = new Board ();
    ticTacToeBoard = ticTacToeBoard.InitBoard ();
    ticTacToeBoard.DisplayBoard (ticTacToeBoard);
}

我找不到关于此的任何其他问题,但如果有任何问题,请随时向我指出。干杯!

【问题讨论】:

  • 您的 InitBoard 应该返回一个 string[,] 而不是一个字符串,并且在 main 方法中,您期望一个 Board 实例而不是 InitBoard 返回的 string[,]。请出示 Board 类代码

标签: c# arrays class 2d return


【解决方案1】:

这里有几个问题:

  • 您通常不需要在构造后调用单独的方法来初始化对象。将初始化放在构造函数中
  • 您正试图从声明为返回string 的方法返回string[,]。那是行不通的
  • 您正在尝试将值string 分配给Board 类型的变量。那是行不通的
  • 您将对象内的状态传递回在同一对象上调用的方法。这是没有意义的。

你的主要方法应该简单到:

Board ticTacToeBoard = new Board();
ticTacToeBoard.DisplayBoard();

将所有初始化逻辑放入你的构造函数中,并让你的DisplayBoard方法使用对象本身的变量。

我也很想将maxRow 和maxColumn 设为常量,或将它们设为构造函数中的参数。

【讨论】:

  • 感谢 Jon,帮助我解决了所有问题,我现在可以继续制作这款游戏​​了,干杯!
猜你喜欢
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多