【问题标题】:For Loop to Foreach [closed]For循环到Foreach [关闭]
【发布时间】:2020-01-08 02:38:16
【问题描述】:

您好,我有一个 for 循环过程,我希望它转换为 foreach 循环,但我无法让它工作,有人可以帮我吗?

int pallet = 1;
int[] res = {5,1};

foreach (int element in res)
{
  var resu = res.Length;
  if (resu < pallet)
    { }
  else { }
}

for (int i = 1; i <= res.Length; i++)
{
  if (i <= pallet)
    { }
  else { }
}

【问题讨论】:

  • 如果for 循环是正确的,那么for 循环是最好的方法,因为您需要当前位置,而foreach 不会给您。附言请不要添加不必要的标签。
  • 两个样本有不同的逻辑,在foreach中当数组大小小于pallet时执行一个块,但在for循环中只有当当前索引小于@时才执行一个块987654330@
  • 我希望它转换为 foreach 循环 - 为什么?
  • 没有必要在foreach 内执行var resu = res.Length;,因为每次迭代的长度当然不会改变。

标签: c# loops for-loop foreach


【解决方案1】:

这里没有任何意义,您正在填写一个数组,但没有使用其中的内容。在您的for 循环中,您正在使用索引并将其与托盘进行比较,而不是实际的数组值(res[i-1])。由于您在 foreach 循环中没有任何索引,因此您将返回数组的实际元素。我相信你可能想要这样的东西,但我可能错了。

你的for循环:

for (int i = 0; i < res.Length; i++)
{
  if (res[i] <= pallet)
    { }
  else { }
}

你的Foreach循环:

foreach (int element in res)
{
  if (element <= pallet)
    { }
  else { }
}

【讨论】:

  • 当然,for 方法应该是从零到&lt; res.Length,因此不需要-1
  • @Andrew 你说得对,数组是从零开始的,只是没有费心去改变他的代码,除了添加比较数组值。
【解决方案2】:

我认为这可能会解决您的问题:

int pallet = 1;
int[] res = { 5, 1 };

foreach (int element in res)
{
  var resu = res.Length;
  if (resu < pallet)
    { }
  else { }
}

int i = 0;
foreach (int element in res)
{
  if (i <= pallet)
    { }
  else { }
  i++;
}

【讨论】:

  • 谢谢,这解决了我的问题,非常感谢。
  • 你可以直接做if (i++ &lt;= pallet),去掉最后的i++
  • 我看不出与帖子中的代码相同的foreach 的代码如何“解决我的问题以转换为 foreach 循环”...@iMemew 要么您的问题与foreach 或……在任何情况下,请考虑编辑您的问题以澄清您实际遇到的问题。
  • @Alexei Pias 添加了int i = 0i++。我不知道为什么 OP 想要使用 foreach 循环来处理 for 会更好地工作的东西,但每个人都有自己的。
  • @John_ReinstateMonica Pias 更改了 for 部分,它可能工作正常......否则为什么 iMemew 会询问有关“ for循环过程并且我想要它的帮助将转换为foreach循环”。
【解决方案3】:
  1. foreach 循环:您的原始代码错误。您可以将其修复为:
foreach (int element in res)  
{                               
  var resu = element;
  if (resu < pallet)
    { }
  else { }
}
  1. 转换为for 循环。我不知道您为什么希望i1 开头,但我确实基于您的原始代码:要在数组的特定索引处访问和获取值(从0 开始),您可以使用@987654327 @。在此,您的数组起始索引为1,您必须使用res[i-1] 而不是res[i]
for (int i = 1; i <= res.Length; i++)
{
  if (res[i-1] <= pallet)
    { }
  else { }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多