gpt4 book ai didi

c# - 循环遍历数组问题的内容

转载 作者:太空狗 更新时间:2023-10-29 22:14:23 27 4
gpt4 key购买 nike

我正在使用一个 int 数组来保存一长串整数。对于这个数组的每个元素,我想检查它是否为 1,如果是,则只做与 1 相关的事情,否则如果它是 2,则做与 2 相关的其他事情,等等存储在数组中的每个值。我想出了下面的代码,但它没有按预期工作,是不是我遗漏了什么?发生的事情是只考虑数组的第一个值。

int[] variable1 = MyClass1.ArrayWorkings();
foreach (int i in variable1)
{
if (variable1[i] == 1)
{
// arbitrary stuff
}
else if (variable1[i] ==2)
{
//arbitrary stuff
}
}

最佳答案

foreach 循环中的 i 保存每次迭代中数组的实际元素值,而不是索引。在您的特定代码示例中,您的数组可能只包含零,这就是为什么您只获得第一个元素(您始终使用索引 0)。 因此,您应该检查 i 而不是 variable1[i]

如果您要检查各种整数常量,switch 表达式更合适,顺便说一句:

foreach (int i in variable1) {
switch (i) {
case 1:
// arbitrary stuff
break;
case 2:
// arbitrary stuff
break;
}
}

switch/case 为您节省了一些写作;如果你曾经从 i 以外的任何地方提取你的值,你可以简单地更改 switch 语句中的 (i) 部分,而且, switch 可能比链接的 if-else 语句更有效地被编译器评估。

注意:您将无法在 foreach 循环中直接更改数组值,因为您无法将任何内容分配给 i。如果您需要分配新的数组值,则必须

  • 在仍然使用 foreach
  • 的同时,给自己加上一个额外的变量
  • 使用另一个循环,例如 for 并自己检索当前索引处的项目。

关于c# - 循环遍历数组问题的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202187/

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