在我的Unity项目中,我有一个列表,其中包含2d字符串数组作为该列表中的元素:
List<string[,]> listOfLists = new List<string[,]>()
//the array has a variable amount of rows and 3 columns
它基本上保存了一些我需要保存的数组。现在,为了控制是否一切正常,我想把它放在一个 foreach-loop 中,并输出保存的所有内容,但它只返回保存在listOfLists[0]
中的数组的第3列
foreach(string smth in listOfLists[0])
{
return smth;
}
我把 foreach-loop 放在override .ToString()
(Debug.Log(xxx.ToString())
)中,我知道它应该可以将string[,]
作为字符串返回,但它确实返回了第一列,所以如果数组是这样定义的:
listOfLists[0][0, 0] = "A";
listOfLists[0][0, 1] = "B";
listOfLists[0][0, 2] = "C";
listOfLists[0][1, 0] = "D";
listOfLists[0][1, 1] = "E";
listOfLists[0][1, 2] = "F";
它只返回A而不返回B、C、D、E或F。
我可以像这样输出它,所以数组不是不工作或任何东西:
return $"{listOfLists[0][0, 0]} geht in die {listOfLists[0][0, 2]} und ihr Foto ist aufzufinden bei: {listOfLists[0][0, 1]}";
我只是认为把它放在一个 foreach-loop 中比单独调用它更实用。
我知道我在 foreach-loop 上做错了什么,但我不知道是什么,也不知道如何解决。
我的目标是这样返回整个数组:
//return
A B C D E F
2条答案
按热度按时间vh0rcniy1#
您遇到的问题是,您编写的foreach试图迭代字符串,而列表中的实际内容是string arrays。
这里有一个在.NET Fiddle上编译和运行的例子,它展示了如何迭代你声明的结构。
a2mppw5e2#
在做了更多的跟踪和错误测试之后,我得出了这个版本:
它神奇地工作了,我觉得很有趣,因为我有一些尝试,其中 test += smth 由于某种原因不工作,它会在Unity中显示一个奇怪的错误信息。但我不会质疑为什么它神奇地如所愿地工作。
还是谢谢你回答这个问题。