与 C# 中的多维数组初始化混淆
Confusion with multidimensional array initialization in C#
我是编程新手,刚开始学习数组。
令我困惑的是在 C# 中初始化多维数组的方式。那是因为我自己没有指定每个元素的坐标,但是 C# 以某种方式做到了。
更具体地说,假设我初始化了这个数组:
string[,] names = {
{"Deadpool", "Superman", "Spiderman"}
{"Catwoman", "Batman", "Venom"}
};
鉴于在一维数组初始化中,C# 首先将第一个值放在元素 [0] 中,我假设这同样适用于多维数组。但它不是对每个单独的维度都做同样的事情吗?这不可能是真的。因为它会将 "Deadpool" 放在行的元素 [0] 上,稍后它会尝试将 "Catwoman" 放在第一列的元素 [0] 上。如果是这种情况,假设第一行的元素 [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);
}
}
}
这基本上就是 foreach 在幕后所做的事情。
如果您想了解它的实际工作原理,请从这里开始:
How does the Java 'for each' loop work?
How is foreach implemented in C#?
How do foreach loops work in C#?
我是编程新手,刚开始学习数组。 令我困惑的是在 C# 中初始化多维数组的方式。那是因为我自己没有指定每个元素的坐标,但是 C# 以某种方式做到了。
更具体地说,假设我初始化了这个数组:
string[,] names = {
{"Deadpool", "Superman", "Spiderman"}
{"Catwoman", "Batman", "Venom"}
};
鉴于在一维数组初始化中,C# 首先将第一个值放在元素 [0] 中,我假设这同样适用于多维数组。但它不是对每个单独的维度都做同样的事情吗?这不可能是真的。因为它会将 "Deadpool" 放在行的元素 [0] 上,稍后它会尝试将 "Catwoman" 放在第一列的元素 [0] 上。如果是这种情况,假设第一行的元素 [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);
}
}
}
这基本上就是 foreach 在幕后所做的事情。 如果您想了解它的实际工作原理,请从这里开始:
How does the Java 'for each' loop work?
How is foreach implemented in C#?
How do foreach loops work in C#?