कभी कभी Resharper के बारे में चेतावनी देते हैं:Resharper के उदाहरण कोड
IEnumerable
के संभावित कई गणन
वहाँ an SO question on how to handle this issue है, और ReSharper साइट भी बातें here बताते हैं।
IEnumerable<string> names = GetNames().ToList();
मेरा प्रश्न यह विशिष्ट सुझाव के बारे में है: यह अभी भी 2 के लिए-प्रत्येक छोरों में दो बार संग्रह के माध्यम से गणना का कारण नहीं बनेगा यह कुछ नमूना कोड है जो आपको बताता बजाय यह करने के लिए है?
आह संभव एकाधिक गणन! इससे स्पष्ट हुआ। – user2250250
नहीं। GetEnumerator() विधि केवल फ़ोरैच लूप में ही लागू की जाएगी। वास्तविक कारण गंदे डेटा के जोखिम के लिए है। उदाहरण के लिए, GetNames() में, एक SQL क्वेरी है, लेकिन केवल क्वेरी जो IENurable लौटाती है। जब आप आमंत्रित करते हैं। टोस्टिस्ट(), आप स्मृति में सभी डेटा स्टोर करते हैं, गंदे डेटा का थोड़ा खतरा होता है।लेकिन यदि 2 लूप ऑप्रेशन के बीच अधिक समय है, तो यदि आप प्रत्येक बार डेटाबेस में SQL को उत्तेजित करते हैं, तो गंदे डेटा का एक बड़ा खतरा होता है। –
@SunRobin यह एक ऐसा उत्तर है जो सत्य को सरल रूप में प्रस्तुत करता है, जैसा कि इसमें भी उल्लेख किया गया है। मैं इसे अभी तक सुधारने के लिए अभी तक नहीं मिला है। "गंदे डेटा" के आपके उपयोग के लिए कुछ और स्पष्टीकरण की आवश्यकता हो सकती है। – CodeCaster