代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

为什么我的元组集合的值没有显示在watch中?

  •  0
  • Edward Tanguay  · 技术社区  · 7 年前

    为什么当我运行这个控制台应用程序时:

    static void Main(string[] args)
    {
        var items = new List<(string login, string email)>();
        items.Add(("james", "lsdkjsdkj@skdfjd.dfkd"));
        items.Add(("james2", "lsdkjsdkj@df333.dfkd"));
        items.Add(("james", "lsdkjsdkj@skdfjd.dfkd"));
        items.Add(("james2", "lsdkjsdkj@df333.dfkd"));
    
        foreach (var item in items)
        {
            Console.WriteLine(item.email);
        }
    
        var duplicates = items.Where(e => e.login == "james");
        Console.WriteLine(duplicates.Count());
    
        foreach (var duplicate in duplicates)
        {
            Console.WriteLine($"Found: {duplicate.login}, {duplicate.email}");
        }
    
        Console.ReadLine();
    }   
    

    它正确地显示了变量的内容 duplicates :

    enter image description here

    但当我调试时,它不会显示 复制品 :

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  2
  •   SᴇM    7 年前

    这个 Current 属性只是集合中枚举器当前位置的元素。

    来自MSDN:

    在下列任一情况下,电流未定义:

    • 枚举数位于集合中第一个元素之前,紧跟在枚举数创建之后。 MoveNext 在读取current的值之前,必须调用以将枚举数提前到集合的第一个元素。

    • 对moveNext的最后一次调用返回false,这表示集合结束。

    • 由于在集合中所做的更改(如添加、修改或删除元素),枚举数无效。

    所以如果你打电话 duplicates.GetEnumerator().MoveNext(); 你会看到 电流 现在里面有数据了。

    如果你想看你的 duplicates 调试时的内容,使用 Results View .