我正在尝试调试从单元测试项目执行的代码,但是当我尝试进入一个方法时,它只是直接传递到下一行,并且不会命中该方法内的断点。该方法位于不同项目中的一个类上,但所有代码都是在调试模式下构建的,我已经尝试清理和重建解决方案,但没有任何乐趣。
然而,自从我向该方法添加了迭代器块后,这种情况才发生。当我删除它并重建时,我可以很好地介入。诡异的?
我使用的是 Visual Studio 2010 Beta 1,这可能只是一个错误吗?
迭代器块使用延迟执行 - 意思是:在您实际开始迭代数据之前,不会执行任何操作。
那么:数据是否已被迭代?是否有任何东西在值上循环?如果您需要添加尽早运行的验证逻辑,目前需要两种方法:
public static IEnumerable<int> GetNumbers(int from, int to) {
// this validation runs ASAP (not deferred)
if (to < from) throw new ArgumentOutOfRangeException("to");
return GetNumbersCore(from, to);
}
private static IEnumerable<int> GetNumbersCore(int from, int to) {
// this is all deferred
while (from <= to) {
yield return from++;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)