C# 为什么我的元组集合的值不显示在watch中?

C# 为什么我的元组集合的值不显示在watch中?,c#,tuples,C#,Tuples,为什么当我运行这个控制台应用程序时: 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", "lsdkjs

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

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();
}   
static void Main(字符串[]args)
{
var items=新列表();
项目。添加((“詹姆斯”,”lsdkjsdkj@skdfjd.dfkd"));
项目。添加((“james2”,”lsdkjsdkj@df333.dfkd"));
项目。添加((“詹姆斯”,”lsdkjsdkj@skdfjd.dfkd"));
项目。添加((“james2”,”lsdkjsdkj@df333.dfkd"));
foreach(项目中的var项目)
{
Console.WriteLine(item.email);
}
var duplicates=items.Where(e=>e.login==“james”);
Console.WriteLine(duplicates.Count());
foreach(var重复中的重复)
{
WriteLine($“找到:{duplicate.login},{duplicate.email}”);
}
Console.ReadLine();
}   
它正确地向我显示了重复变量
的内容

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();
}   

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();
}   
但是当我调试时,它不会显示重复的
的内容:

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();
}   

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

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();
}   
从MSDN:

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();
}   
在下列任何情况下,电流未定义:

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();
}   
  • 枚举数位于集合中第一个元素之前,紧随创建枚举数之后。在读取Current的值之前,必须调用以将枚举数前进到集合的第一个元素

  • 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();
    }   
    
  • 对MoveNext的最后一次调用返回false,这表示集合结束

  • 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.GetEnumerator().MoveNext()
您将看到当前的
中现在有数据

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();
}   
如果要在调试时查看重复的
内容,请使用
结果视图

该属性只是枚举数当前位置集合中的一个元素

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();
}   
从MSDN:

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();
}   
在下列任何情况下,电流未定义:

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();
}   
  • 枚举数位于集合中第一个元素之前,紧随创建枚举数之后。在读取Current的值之前,必须调用以将枚举数前进到集合的第一个元素

  • 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();
    }   
    
  • 对MoveNext的最后一次调用返回false,这表示集合结束

  • 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.GetEnumerator().MoveNext()
您将看到当前的
中现在有数据

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();
}   

如果要在调试时查看重复的
内容,请使用
结果视图

它显示在
结果视图内
。如果您在Where子句后添加了ToList(),它应该在该点显示。重复项只是一个可枚举项,需要枚举。LINQ是懒惰的,除非您使用类似ToList或ToArray的内容强制枚举。SeM的回答是正确的,从更直接的角度来看。奇怪的是,
副本
*不应该有
.Current
IEnumerable
具有
GetEnumerator
并且
GetEnumerator
返回一个执行该操作的
IEnumerator
。奇怪的是,
重复项
,在被枚举之前,具有
.Current
属性。@LasseVågsætherKarlsen这不仅是
元组
,我还用
列表()进行了测试,结果相同,
当前
属性在调试时存在。编辑:它每次都显示
当前的
,即使在
(新字符串[]{“james”,“james2”,“james”,“james2”})中也是如此
它显示在
结果视图内
。如果您在Where子句后添加了ToList(),它应该在该点显示。重复项只是一个可枚举项,需要枚举。LINQ是懒惰的,除非您使用类似ToList或ToArray的内容强制枚举。SeM的回答是正确的,从更直接的角度来看。奇怪的是,
副本
*不应该有
.Current
IEnumerable
具有
GetEnumerator
并且
GetEnumerator
返回一个执行该操作的
IEnumerator
。奇怪的是,
重复项
,在被枚举之前,具有
.Current
属性。@LasseVågsætherKarlsen这不仅是
元组
,我还用
列表()进行了测试,结果相同,
当前
属性在调试时存在。编辑:它每次都显示
当前的
,即使在
(新字符串[]{“james”,“james2”,“james”,“james2”})中也是如此
奇怪的是,枚举数有当前属性,而不是枚举数,除非对于这样的可数,他们伪造并组合了它,但这似乎也很奇怪。@LasseVågsætherKarlsen非常奇怪,我想这与
元组
有关。奇怪的是,枚举数有当前属性,而不是枚举数,除非他们伪造了这样的元组并将其组合起来,但这似乎也很奇怪。@LasseVågsætherKarlsen这很奇怪,我想这与
元组有关。
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();
}