C# - Foreach循环在遍历代码时工作,但在运行时不工作

时间:2018-04-17 21:25:17

标签: c# foreach

我有一个名为enemy的自定义类列表(名为enemyList)。我使用foreach循环。在里面,我生成一个介于1到200,000之间的随机数。然后我将它保存到foreach循环之外的列表中:

  try
  {
  List<int> randoms = new List<int>();
  foreach (enemy m in enemyList)
  {
     Random r = new Random();
     int i = r.Next(1, 2000);
     randoms.Add(i);
  }

然后,当完成时,在foreach循环下,我这样做:

int highest = randoms.Max();
int rate = -1;

接下来,我使用另一个foreach循环来确定randoms中哪个值等于最高数。

  foreach (int number in randoms)
   {
       rate++;
       if (highest == number)
       {
           return rate;
       }
   }
   }
   catch (Exception)
   {

     return 0;
   }

当我运行它时,它会显示哪个项目最高,(例如:如果它是randoms列表中的第一个,则显示0)。但由于某种原因,它总是返回0.但是如果我浏览代码,它就能正常工作。任何人都可以解释为什么会这样,所以我可以解决它吗?

1 个答案:

答案 0 :(得分:-3)

你是否想从敌人名单中选择一个随机物品?

如果是这样,你可以这样做:

var rng = new Random();
var randomEnemy = enemyList[ rng.Next( enemyList.Count ) ];

如果您正在快速执行此操作,则需要在其他位置声明随机数生成器,以便它不会重新播种并不断选择相同的值。