0

我正在尝试编译一个 c3 程序,但我不断收到以下错误。

错误 CS1502:匹配的最佳重载方法string.Join(string, string[])有一些无效参数。

错误 CS1503:参数#2无法将char[]表达式转换为类型string[]

for (int row = 0; row < 3; row++)
{
    char[] arr = new char[3];
    for (int col = 0; col < 3; col++)
    {
        if (board[row, col] == Player.None)
        {
            arr[col] = ' ';
        }
        else
        {
            arr[col] = board[row, col] == Player.P1 ? 'X' : 'O';
        }
    }
     
    Console.WriteLine("| {0} |", string.Join(" | ", arr));
4

3 回答 3

3

答案很简单,arr是 achar[]而不是 a string[]

尝试这个

Console.WriteLine("| {0} |", string.Join(" | ", arr.Select(a => a.ToString())));
于 2013-11-14T10:02:06.610 回答
2

您可以迭代数组的chars (如其他人所建议的那样),也可以更改数组的类型

for (int row = 0; row < 3; row++)
{
    var arr = new string[3];
    for (int col = 0; col < 3; col++)
    {
        if (board[row, col] == Player.None)
        {
            arr[col] = " ";
        }
        else
        {
            arr[col] = board[row, col] == Player.P1 ? "X" : "O";
        }
    }

    Console.WriteLine("| {0} |", string.Join(" | ", arr));
}
于 2013-11-14T10:06:37.453 回答
0

由于您arr的类型char[],您可以使用String(char[])构造函数来创建string对象实例

var strData= new string[]{new string(arr)};
Console.WriteLine("| {0} |", (string.Join(" | ", strData));
于 2013-11-14T10:01:20.247 回答