与C#中的多维数组初始化混淆

时间:2016-04-03 19:00:29

标签: c# multidimensional-array array-initialization

我是一名编程新手,我刚刚开始学习数组。 令我困惑的是可以在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#如何以及在何处放置每个值,以避免一维的值覆盖另一个维度的值?

1 个答案:

答案 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?

How is foreach implemented in C#?

How do foreach loops work in C#?