केवल आपको अपने "आइटम" संग्रह में प्रत्येक आइटम के लिए एक ऑब्जेक्ट वापस करने की अनुमति देता है। अतिरिक्त .Where(x => DoIReallyWantThis(x))
का उपयोग करके आप अवांछित वस्तुओं को बाहर निकालने की अनुमति देते हैं, लेकिन फिर भी आपको प्रति आइटम एक ऑब्जेक्ट वापस करने की अनुमति देता है। यदि आप संभावित रूप से प्रति आइटम एक से अधिक ऑब्जेक्ट चाहते हैं, तो आप .SelectMany
का उपयोग कर सकते हैं, लेकिन पढ़ने के लिए आसान से कम एक लंबी लाइन के साथ हवा में जाना आसान है।
"उपज रिटर्न" में आपके कोड को और अधिक पठनीय बनाने की क्षमता है यदि आप जटिल डेटा संरचना को देख रहे हैं और यहां और वहां जानकारी के बिट्स चुन रहे हैं। मैंने जो देखा है उसका सबसे अच्छा उदाहरण था जहां लगभग एक दर्जन अलग-अलग स्थितियां थीं जिसके परिणामस्वरूप एक लौटाई गई वस्तु होगी, और प्रत्येक मामले में लौटाई वस्तु अलग-अलग बनाई गई थी।
स्रोत
2009-09-25 20:08:44
आपका दूसरा कोड खंड * चयन का * कार्यान्वयन * है। (मान लीजिए कि LINQ ऑब्जेक्ट्स है।) यह सब कुछ है - यह एक फोरच लूप चलाता है, प्रत्येक आइटम पर प्रतिनिधि चलाता है, और परिणाम देता है। –
हां। लेकिन पहले और दूसरे टाइप करते समय अभी भी अंतर है। पहला अंतर: एलओसी की संख्या, दूसरा अंतर: पठनीयता, तीसरा अंतर: जब उपज रिटर्न एक विधि में मौजूद होता है, तो कुछ प्रतिबंध लागू होते हैं (यानी: आप एक ही विधि में उपज वापसी के बाद वापसी का चयन नहीं कर सकते हैं)। –