2013-11-14 47 views
0

我想编译一个c3程序,但我一直在获取下面的错误。C#编译错误转换字符[]到字符串[]

错误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)); 
+1

那么一切都是在消息中的类型:你”重新创建一个字符数组,而你的方法期待一个字符串数组... –

+0

重复的[如何将字符数组转换为字符串数组?](http://stackoverflow.com/questions/7936235/)。 – CodeCaster

回答

0

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

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

这将返回'| Foo |'当输入是'{'F','o','o'}'时,我怀疑OP要''| F | o |在那种情况下。 – CodeCaster

+0

@RuneFS:尽管我强调你的评论,我只是检查,它会接受一个罚款。尽管我没有看过这个文档,我认为它有一个params string []重载(或类似的),这意味着单个字符串是好的(如果有点没有意义)。 – Chris

3

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

试试这个

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

你既可以遍历数组的char S(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)); 
} 
+0

这实际上可能是最好的解决方案 - 首先使用正确的数组类型。做好充分的问题,而不是仅仅修复错误行(这是我在做别人回答之前做过的事情)。 – Chris