Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Why does calling Enumerable.First() appear to return a copy of the first item in the enumeration
- public class Thing
- {
- public bool Updated { get; set; }
- public string Name { get; private set; }
- public Thing(string name)
- {
- Name = name;
- }
- public override string ToString()
- {
- return string.Format("{0} updated {1} {2}", Name, Updated, GetHashCode());
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("IEnumerable<Thing>");
- var enumerableThings = GetThings();
- var firstThing = enumerableThings.First();
- firstThing.Updated = true;
- Console.WriteLine("Updated {0}", firstThing);
- foreach (var t in enumerableThings)
- Console.WriteLine(t);
- Console.WriteLine("IList<Thing>");
- var thingList = GetThings().ToList();
- var thing1 = thingList.First();
- thing1.Updated = true;
- Console.WriteLine("Updated {0}", thing1);
- foreach (var t in thingList)
- Console.WriteLine(t);
- Console.ReadLine();
- }
- private static IEnumerable<Thing> GetThings()
- {
- for (int i = 1; i <= 3; i++)
- {
- yield return new Thing(string.Format("thing {0}", i));
- }
- }
- }
- }
- IEnumerable<Thing>
- Updated thing 1 updated True 37121646
- thing 1 updated False 45592480
- thing 2 updated False 57352375
- thing 3 updated False 2637164
- IList<Thing>
- Updated thing 1 updated True 41014879
- thing 1 updated True 41014879
- thing 2 updated False 3888474
- thing 3 updated False 25209742
- IEnumerable<Thing>
- Updated thing 1 updated True 45592480
- thing 1 updated False 45592480
- thing 2 updated False 57352375
- thing 3 updated False 2637164
- IList<Thing>
- Updated thing 1 updated True 41014879
- thing 1 updated True 41014879
- thing 2 updated False 3888474
- thing 3 updated False 25209742
Add Comment
Please, Sign In to add comment