关于.NET 设计模式 思维导图

Donkey'sNodes

导航

C# 两种集合ToList()后的差异

关于IEnumerable.ToList()和一个已经是List的集合ToList(),转换后原来是存在差异的

情形一:IEnumerable.ToList()

        var lst1 = new int[] { 1, 2, 3, 4, 5, 6 }.Select(f => new A() { Id = f });
        var lst2 = lst1.ToList();
        var first1 = lst1.ElementAt(0);
        var first2 = lst2.ElementAt(0);

        Console.WriteLine($"ToList()之前第一个元素的HashCode:{first1.GetHashCode()}");
        Console.WriteLine($"ToList()之后第一个元素的HashCode:{first2.GetHashCode()}");
        Console.WriteLine($"----->>>结论是,在这种情况下ToList()后,对象被重新创建了");

        Console.WriteLine("---------------------------------------------------------");
        Console.WriteLine();
        Console.WriteLine();

情形二:List.ToList()

        var lst3 = new int[] { 1, 2, 3, 4, 5, 6 }.Select(f => new A() { Id = f }).ToList();
        var lst4 = lst3.ToList();
        var first3 = lst3.ElementAt(0);
        var first4 = lst4.ElementAt(0);

        Console.WriteLine($"ToList()之前第一个元素的HashCode:{first3.GetHashCode()}");
        Console.WriteLine($"ToList()之后第一个元素的HashCode:{first4.GetHashCode()}");
        Console.WriteLine($"----->>>结论是,后一种情况下ToList()后,对象还是原来的对象");

        Console.WriteLine("---------------------------------------------------------");
        Console.WriteLine();
        Console.WriteLine();

        Console.Read();

输出结果

posted on 2021-03-11 14:10  中年油腻驴  阅读(961)  评论(1编辑  收藏  举报