具有锯齿状数组长度的问题

问题描述 投票:0回答:3

所以我正在用C#在Unity中进行项目,我必须从csv文件中获取信息。我制作了一个测试文件来开发代码,但是有一个小问题。

测试csv文件包含(3行,每行5列):

5,9,12,53,67
8,24,33,49,71
10,16,28,64,88

我正在使用下面的代码读取锯齿状的数组。当我打印到控制台(使用debug.log函数)时,每行的长度都会得到正确的答案。但是,如果我使用for循环,则它仅获取第一行的长度,而不获取其他两行的长度。这怎么可能?据我所知,for循环应该可以完美地工作。没有错误。

有什么想法吗?

感谢您的帮助!

代码:

StreamReader test = new StreamReader("D:/Unity/Projects/.../Assets/Resurces/test.csv");
var testLines = new List<string[]>();
int row = 0;

while (!test.EndOfStream)
{
    string[] Line = test.ReadLine().Split(',');
    testLines.Add(Line);
    row++;
}

var data = testLines.ToArray();

Debug.Log(data.Length);
Debug.Log(data[0].Length);
Debug.Log(data[1].Length);
Debug.Log(data[2].Length);

for (int i=0; i<data.Length; i++)
{
    Debug.Log("i: " + i);
    Debug.Log(data[i].Length);
}

我在控制台上得到的内容:

3
5
5
5
i: 0
5
i: 1
i: 2
c# for-loop unity3d jagged-arrays variable-length
3个回答
0
投票

我已经打开了单位,并且您的代码看起来应该可以工作,所以我在否则为空的单行为的Start函数中对其进行了测试,并获得了预期的结果。

编辑:您很可能已在控制台中打开了“折叠”,这是一个功能而不是错误,您可以将其打开以防止每次更新时都会向控制台发送垃圾邮件,从而隐藏以后的循环,因为代码和结果两者都与第一个循环相同。


0
投票

因此,显然在控制台上有一个名为Collapse的按钮。如果启用,统一将隐藏相同的消息。从未使用过它,我不记得要打开它,但是看起来它确实做了它应该做的事情。谢谢大家的帮助,特别是对@Adam的帮助,他向我指出了此按钮!


-1
投票

我在一个示例统一项目中调试了您的代码段,并且看到了预期的结果。请再次验证。另一种选择是尝试foreach。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.