महान आश्चर्य मैं आज निम्नलिखित व्यवहार मनाया के साथ: एक वर्गबदलने गुण .Current
class Foo
{
prop int FooNumber { get; set; }
}
और इस कोड को देखते हुए
IEnumerable<Foo> foos = Enumerable.Range(0,3).Select(new Foo());
foreach (var foo in foos)
foo.Bar = 5;
foreach (var foo in foos)
Console.Write(foo.Bar); // Writes 000
जबकि आरंभ new List<Foo>{ new Foo(), new Foo(), new Foo() }
करने के लिए foos
पाश लिखने बनाता है " 555 "।
मेरा प्रश्न: ऐसा क्यों होता है और वहाँ (है, जो एक टिप्पणी की जरूरत है, क्योंकि यह यहाँ की जरूरत हो प्रतीत नहीं होता है) इस whithout .ToList()
का उपयोग कर नाकाम करने के लिए एक रास्ता है है।
रेसर्पर "संभावित एकाधिक गणना" कहने वाली अद्भुत दुनिया में आपका स्वागत है। एक गणना योग्य ** नहीं ** संग्रह है। तथ्य यह है कि कभी-कभी एक गणना एक संग्रह पर है और आप इसके नीचे संशोधित कर सकते हैं एक साइड इफेक्ट है। –