我是一名编程新手,我刚刚开始学习数组。 令我困惑的是可以在C#中初始化多维数组的方式。那是因为我自己没有指定每个元素的坐标,但是C#以某种方式做到了。
更具体地说,让我们说我初始化这个数组:
string[,] names = {
{"Deadpool", "Superman", "Spiderman"}
{"Catwoman", "Batman", "Venom"}
};
鉴于在单维数组初始化中,C#首先将第一个值放在element [0]中,我认为对于多维数组也是如此。但是,对于每个单独的维度,它不会做同样的事情吗?这不可能是真的。因为它会放置" Deadpool"在行的元素[0]上,稍后它会尝试放置" Catwoman"在第一列的元素[0]上。如果是这种情况,假设第一行的元素[0]与第一列的元素[0]相同,那么#34; Catwoman"将取代" Deadpool"因为两者都写在[0,0]中。然而,使用foreach
在控制台上编写所有内容,都会显示出来。那么C#如何以及在何处放置每个值,以避免一维的值覆盖另一个维度的值?
答案 0 :(得分:0)
如果你将foreach转换为for循环,它可能会更有意义:
static void Main(string[] args)
{
string[,] names = {{"Deadpool", "Superman", "Spiderman"},{"Catwoman", "Batman", "Venom"}};
for (int index0 = 0; index0 < names.GetLength(0); index0++)
{
for (int index1 = 0; index1 < names.GetLength(1); index1++)
{
var name = names[index0, index1];
Console.Write(name);
}
}
}
这基本上是foreach在幕后所做的事情。 如果您想了解实际工作原理,请从这里开始:
How does the Java 'for each' loop work?