我有一个奇怪的事情,min
和min2
在我调试时返回不同的值,有什么原因吗?
[TestMethod]
public void TestGroupingOfTimesAndDistances()
{
// arrange
...
var routes = network.GetNetworkRoutes(startPoint, endPoints); // this yields one at a time
// act
routes.ToBandings();
}
public static bool ToBandings(this IEnumerable<INetworkRoute> enumerable)
{
var min = enumerable.Min(nr => nr.Value.Distance);
var min2 = enumerable.Min(nr => nr.Value.Distance);
return true;
}
如果这很重要,我将从MS Test Runner运行此代码。框架4.5,使用VS 2013。
答案 0 :(得分:3)
如果enumerable
在通话之间发生变化,可能会发生这种情况。似乎GetNetworkRoutes
使用延迟评估来返回结果。这就是为什么每次在其上调用Min
方法时都会枚举其结果的原因。所以第二个返回不同的结果,这就是min的原因。你得到的价值是不同的。如果您想阻止此方法使用ToList
或ToArray
方法来实现结果。并将其传递给您的方法。