【问题标题】:C# compilation error converting char[] into string[]将 char[] 转换为 string[] 的 C# 编译错误
【发布时间】:2013-11-14 09:59:51
【问题描述】:

我正在尝试编译一个 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));

【问题讨论】:

标签: c# string


【解决方案1】:

答案很简单,arrchar[] 而不是string[]

试试这个

Console.WriteLine("| {0} |", string.Join(" | ", arr.Select(a => a.ToString())));

【讨论】:

    【解决方案2】:

    您可以迭代数组的chars (as suggested by others),也可以更改数组的类型

    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));
    }
    

    【讨论】:

    • 这实际上可能是最好的解决方案——首先使用正确的数组类型。很好地全面看待问题,而不仅仅是修复错误行(这是我在其他人回答我的意图之前在脑海中所做的)。
    【解决方案3】:

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

    var strData= new string[]{new string(arr)};
    Console.WriteLine("| {0} |", (string.Join(" | ", strData));
    

    【讨论】:

    • 当输入为{'F', 'o', 'o'} 时,这将返回| Foo |,我怀疑在这种情况下OP 想要| F | o | o |
    • @RuneFS:尽管我赞成您的评论,但我刚刚检查过,它会接受一个字符串。虽然我第二次没有查看文档,但我认为它有一个 params string[] 重载(或类似的),这意味着单个字符串很好(如果有点毫无意义)。
    猜你喜欢
    • 2014-11-19
    • 1970-01-01
    • 2016-11-20
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多