c# - 调试器可以告诉我 foreach 循环的计数/状态吗?

标签 c# debugging foreach

假设我有以下代码:

List<SomeObject> someObjects = ReturnListWithThousandsOfObjects();

foreach(SomeObject someobject in someObjects)
{
   DoSomething.With(someObject);
}

还假设在运行一分钟后,我在 DoSomething.With(someObject); 上设置了一个断点。

调试器对我来说很好用。但现在我想知道我在列表迭代中处于什么位置(假设列表是无序的/没有键)。

有没有办法让调试器说“foreach 已运行 2321 次迭代中的 532 次”?

最佳答案

作为调试工具,难道没有 indexof 方法吗?

快速观察 - someObjects.indexOf(someObject);

已添加 - 对不起,如果有点简短。

正如 Guffa 所指出的,如果值是唯一的或默认的相等比较器 EqualityComparer 函数使用唯一值(例如自定义 GetHashCode/Equals 重载),这将最有效。

    public class ATest
    {
        public int number { get; set; }
        public int boo { get; set; }
        public ATest()
        {

        }
    }

    protected void Go()
    {
        List<ATest> list = new List<ATest>();

        foreach(var i in Enumerable.Range(0,30)) {
            foreach(var j in Enumerable.Range(0,100)) {
                list.Add(new ATest() { number = i, boo = j });                  
            }
        }

        var o =0; //only for proving concept.
        foreach (ATest aTest in list)
        {               
            DoSomthing(aTest);
            //proof that this does work in this example.
            o++;
            System.Diagnostics.Debug.Assert(o == list.IndexOf(aTest));
        }

    }

关于c# - 调试器可以告诉我 foreach 循环的计数/状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299400/

相关文章:

python - python 是否有一种模式可以跟踪执行的每一行,类似于 'bash -x' ?

php - 在 php foreach 循环中回显 SQL PDO 对象

php - 如何从 PHP 中的关联数组的内键访问值?

javascript - angularjs 循环逻辑,forEach

c# - ComboBox 中的默认加载值 - WPF MVVM

c - 调整非特权帐户的 token (C、Windows)

C# Json.Net 使用不同的 "key"参数反序列化 Json

delphi - 有没有什么快速方法可以在调试时停止在特定的 Windows 消息或 API 处?

javascript - 在正则表达式中,我需要仅在中间允许空格并在开头和结尾处防止空格

c# - contains 和 equal(==) 的区别