gpt4 book ai didi

c# - 在 foreach 循环中打印出 MyArray[i]

转载 作者:行者123 更新时间:2023-12-05 08:28:56 26 4
gpt4 key购买 nike

我找不到在 Internet 上正确搜索它的方法,但是当尝试使用 foreach 循环在 visual studio 上打印出一个简单数组时发生了一些奇怪的事情。

int[] MyArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

foreach (int i in MyArray)
{
Console.WriteLine(MyArray[i]);
}

我敢于像在 for 循环中一样使用它进行迭代,结果在命令提示符下显示为;

2 3 4 5 6 7 8 9 0 1.

我不能结束说“好吧,这不是正确的方式”并继续前进。如下所示,正确使用时它会起作用。

foreach (var i in MyArray)
{
Console.WriteLine(i);
}

有人可以帮助我激发好奇心吗?它是如何在成功工作的同时设法悄无声息地失败的?

最佳答案

foreach 循环不会为您提供索引值,它会为您提供元素的。在您的例子中,第一个元素是 1,然后您像索引一样使用它来获取 2

这是您的代码,在 WriteLine 方法中包含一些附加信息以说明正在发生的事情

int[] MyArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
foreach (int i in MyArray)
{
Console.WriteLine($"i is '{i}', MyArray[i] is '{MyArray[i]}'");
}
i is '1', MyArray[i] is '2'i is '2', MyArray[i] is '3'i is '3', MyArray[i] is '4'i is '4', MyArray[i] is '5'i is '5', MyArray[i] is '6'i is '6', MyArray[i] is '7'i is '7', MyArray[i] is '8'i is '8', MyArray[i] is '9'i is '9', MyArray[i] is '0'i is '0', MyArray[i] is '1'

For the sake of avoiding confusion, don't name the variable of a foreach loop i. Call it something that better represents each element of your collection.

foreach (var number in MyArray)
{
Console.WriteLine(number);
}

这与 for 循环不同,后者(大部分时间)使用索引值

// this is why people call the for loop variable "i"
for (int index = 0; index < myArray.Length; index++)
{
var number = myArray[index];
}

有趣的是, 有一种使用 foreach 循环获取索引值的方法,但它更高级并且使用 LINQ。

foreach (var data in MyArray.Select((x, i) => new { Value = x, Index = i}))
{
var number = data.Value;
var index = data.Index;
}

不过不用担心,只有在您确实需要时才有必要。

关于c# - 在 foreach 循环中打印出 MyArray[i],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72938130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com