【问题标题】:F11 debugs correctly but F5 does notF11 正确调试,但 F5 不正确
【发布时间】:2012-07-12 04:15:17
【问题描述】:

我的一些代码有一个奇怪的问题。我创建了一些对象的列表;当尝试用新对象填充此列表时,如果我使用 F5,则列表中的所有成员将被创建为彼此完全相同!

但是当我尝试通过 F11 调试这个问题时,列表的成员将被创建为彼此不同的(这是正确的)。我正在使用循环来生成列表的所有成员,并且在循环的每次迭代中,我使用new 首先实例化类的对象,然后将其添加到列表中。

我将列表定义为:

  1. List<MyClass> classList = new List<MyClass>();
  2. MyClass 包含一些用户定义的成员和方法

我不明白为什么 F5 不能正确填写列表。我试图用只包含字符串和整数成员的其他类复制同样的问题,但它工作正常。

【问题讨论】:

  • 您是否每次都使用new Random 对象生成元素?还是使用不同的线程?
  • 如果您希望任何人有机会解决这个问题,您需要发布相关代码...
  • 请显示更多代码。该循环将特别有趣。要格式化代码,请在代码的第一行之前添加一个空行,并将片段缩进四个额外的空格。
  • 可能是F5和F11速度不同造成的。由于 F11 步数更精细,因此需要更多步数,因此通常需要更多时间。同时,不同线程上的某些东西可能会影响您的列表元素 - 如果生成发生得更快(如 F5),您将看不到这种行为。只是一个理论......
  • @Charmander 是的,我在循环的每次迭代中都使用 new Random !其实不只是F11可以正常工作,如果我在循环的某处放了一个断点然后使用F5,它就可以正常工作!

标签: c# visual-studio-2010


【解决方案1】:

问题是因为在循环的每次迭代中都使用了 new Random() 方法。正确的做法是使用例如

rndNumber=new Random() 

一旦退出循环,然后在循环中只使用

rndNumber.Next();

有关解决方案的更多信息可以在以下链接中找到:
Random number generator always picks the same value when run inside a loop

【讨论】:

  • 如果问题重复,您应该发布代码和/或一起删除问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 2017-12-03
  • 2016-10-05
  • 1970-01-01
  • 2022-10-09
  • 2018-06-21
相关资源
最近更新 更多