Mat*_*att 34 .net c# debugging foreach visual-studio
除了设置调试变量并在每次启动foreach时递增它,当你连接Visual Studio调试器时,有没有办法告诉这是循环中的第X个时间?
我想这将是Visual Studio的一个功能,如果有的话,不会添加到已编译的代码中.
Gar*_*ian 23
在循环内设置断点,然后右键单击断点以设置条件.您也可以在调试时右键单击以查看命中计数,并根据需要重置它.您可以设置一个布尔表达式,当断点点击有条件地中断(或者只是传递)时会对其进行求值.
joh*_*ohv 13
扩展Garo Yeriazarian的答案......
一种快速而肮脏的方式,无需重新编译.示例代码:
var ints = new[] {5, 6, 0, 1};
foreach (var i in ints)
{
Debug.WriteLine(100 / i);
}
Run Code Online (Sandbox Code Playgroud)
在循环之前添加一个断点,在其中添加一个断点.当第一个被击中并且您想要开始计数时,设置命中计数条件:

设置一些大的命中计数条件并重置计数器并继续.然后当异常或任何火灾时,您可以再次检查"当前命中数".

以下是一个以前的Stack Overflow问题,它似乎是您正在寻找的: get-index-of-current-foreach-iteration
从该链接引用的答案:
Foreach用于迭代实现IEnumerable的集合.它通过在集合上调用GetEnumerator来执行此操作,该集合将返回Enumerator.
此枚举器有一个方法和属性:
- 的MoveNext()
- 当前
Current返回Enumerator当前所在的对象,MoveNext将Current更新为下一个对象.
显然,索引的概念对于枚举的概念是陌生的,并且不能完成.
因此,大多数集合都可以使用索引器和for循环结构遍历.
与使用局部变量跟踪索引相比,我更倾向于在这种情况下使用for循环.
小智 6
您还可以使用Visual Studio的即时窗口,它允许您在调试时针对作用域中的任何变量编写C#表达式。使用List.IndexOf()方法,如下所示:
Visual Studio 2017 中的点击次数:
foreach。| 归档时间: |
|
| 查看次数: |
13469 次 |
| 最近记录: |