【问题标题】:C# error: Cannot Convert 'string[]' to 'string'C# 错误:无法将“字符串 []”转换为“字符串”
【发布时间】:2013-08-23 00:45:35
【问题描述】:

我正在尝试为 Unity 编写一些 C# 代码,这些代码将从文本文件中读取,将每一行存储在字符串数组中,然后将其转换为 2D 字符数组。

错误发生在:

void ReadFile()
{
    StreamReader read = new StreamReader(Application.dataPath + "/Maze1.txt");
    int length = read.ReadLine().Length;
    maze = new string[length, length];
    line = new string[length];

    while(!read.EndOfStream)
    {
        for (int i = 0; i <= length; i++)
        {
            line[i] = read.ReadLine();
        }
        for( int i = 0; i <= length; i++)
        {
            for( int j = 0; j <= length; j++)
            {
                maze[i,j] = line[i].Split(','); // <---This line is the issue.
            }       
        }
    }
}

我得到的确切错误是:

Cannot Implicitly convert type 'string[]' to 'string'

这个错误是什么意思,我该如何修复代码?

【问题讨论】:

  • 这一行:int length = read.ReadLine().Length;将流前进一行,然后在您从第 2 行开始读取的 for 循环中。
  • 是的,没关系,文件的长度、宽度和高度相同。
  • 但是你是否需要文本的第一行?因为在您的代码中,第一行将被遗漏。
  • 是的,谢谢你我明白你的意思了。在我开始绘制迷宫后,这解决了问题的第二部分。
  • 好的,看看我的回答,看看是否适合你。不要忘记接受解决您问题的答案。

标签: c# arrays unity3d


【解决方案1】:

我感觉你打算这样做:

    for( int i = 0; i <= length; i++)
    {
        var parts = line[i].Split(',');
        for( int j = 0; j <= length; j++)
        {
            maze[i,j] = parts[j];
        }       
    }

【讨论】:

  • 感谢您的帮助。我能够让它正常工作。
【解决方案2】:

正如错误所说,maze[i,j] 将采用 string,但 line[i].Split(','); 将返回 string[]

【讨论】:

    【解决方案3】:

    在您的情况下,迷宫更好的数据结构是数组数组,而不是二维数组。所以你可以直接分配拆分操作的结果,而不需要额外的副本:

    StreamReader read = new StreamReader(Application.dataPath + "/Maze1.txt");
    string firstLine = read.ReadLine();
    int length = firstLine.Length;
    string[][] maze = new string[length][];
    
    maze[0] = firstLine.Split(',');
    
    while(!read.EndOfStream)
    {
        for (int i = 1; i < length; i++)
        {
            maze[i] = read.ReadLine().Split(',');
        }
    }
    

    然后你可以访问类似于二维数组的迷宫:

    var aMazeChar = maze[i][j];
    

    【讨论】:

      猜你喜欢
      • 2022-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      相关资源
      最近更新 更多