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

C# C中多维数组初始化的混淆#,c#,multidimensional-array,array-initialization,C#,Multidimensional Array,Array Initialization,我是一名编程新手,刚刚开始学习数组。 让我困惑的是,在C#中初始化多维数组的方式。这是因为我自己没有指定每个元素的坐标,但C#不知怎么做了 更具体地说,假设我初始化了这个数组: string[,] names = { {"Deadpool", "Superman", "Spiderman"} {"Catwoman", "Batman", "Venom"} }; 假设在一维数组初始化中,C#首先将第一个值放入元素[0],我假设多维数组也是如此。但它对每个独立的维度不是都一样吗?这不可能是真的

我是一名编程新手,刚刚开始学习数组。 让我困惑的是,在C#中初始化多维数组的方式。这是因为我自己没有指定每个元素的坐标,但C#不知怎么做了

更具体地说,假设我初始化了这个数组:

string[,] names = {
 {"Deadpool", "Superman", "Spiderman"}
 {"Catwoman", "Batman", "Venom"}
};

假设在一维数组初始化中,C#首先将第一个值放入元素[0],我假设多维数组也是如此。但它对每个独立的维度不是都一样吗?这不可能是真的。因为这样它将在行的元素[0]上放置“Deadpool”,然后它将尝试在第一列的元素[0]上放置“Catwoman”。如果是这样的话,假设第一行的元素[0]与第一列的元素[0]相同,“Catwoman”将替换“Deadpool”,因为两者都将写入[0,0]。然而,使用
foreach
在控制台上编写所有内容,这两种方法都会出现。那么C#如何以及在何处放置每个值,以避免一个维度的值覆盖另一个维度的值

如果将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);
               }
           }
       }
static void Main(字符串[]args)
{
字符串[,]名称={{“死池”、“超人”、“蜘蛛侠”}、{“猫女”、“蝙蝠侠”、“毒液”};
对于(int index0=0;index0
这基本上就是foreach在幕后所做的事情。 如果您想了解其实际工作原理,请从这里开始:


嗯。。。大括号中包含两组数据项,因此没有歧义的余地。编译器做了正确的事情。欢迎使用Stackoverflow。你可以在数组中循环,你会看到。所有记录在这里:哦,我明白了。这个示例帮助我理解了将值放置到元素的过程仅从第一个维度的0开始。第二个维度的值从1开始,跳过第一行,因此“Deadpool”在[0,0]中结束,而“Catwoman”在[1,0]中结束。谢谢我的荣幸-如果这回答了你的问题,请记住将其标记为答案。我做了,但让我问你更多的问题。添加另一个维度和另一个带有index2的for循环,当我将行
var name=names[index0,index1]
更改为var name=[index0,index1,index2]时,我得到一个错误,我只能在[]内添加两个索引。为什么呢?