कम चूसने के लिए मेरी अनन्त खोज में मैं "उपज" कथन को समझने की कोशिश कर रहा हूं, लेकिन मुझे एक ही त्रुटि का सामना करना पड़ता है।कुछ "समझ" को समझने में मदद
[someMethod] के शरीर पुनरावर्तक ब्लॉक नहीं किया जा सकता क्योंकि 'System.Collections.Generic.List < Aclass>' पुनरावर्तक इंटरफ़ेस प्रकार नहीं है।
foreach (XElement header in headersXml.Root.Elements()){ yield return (ParseHeader(header)); }
क्या मैं गलत कर रहा हूँ:
इस कोड को मैं कहाँ अटक गया है? क्या मैं इटेटरेटर में उपज का उपयोग नहीं कर सकता? तो बात क्या है? इस उदाहरण में यह कहा गया है कि List<ProductMixHeader>
एक इटरेटर इंटरफ़ेस प्रकार नहीं है। ProductMixHeader
एक कस्टम क्लास है, लेकिन मुझे लगता है कि List
एक इटरेटर इंटरफ़ेस प्रकार है, नहीं?
- एडिट -
सभी त्वरित उत्तरों के लिए धन्यवाद।
मुझे पता है कि यह सवाल इतना नया नहीं है और वही संसाधन पॉप-अप रहते हैं।
यह पता चला कि मैं सोच रहा था कि मैं रिटर्न प्रकार के रूप में List<AClass>
वापस कर सकता हूं, लेकिन List<T>
आलसी नहीं है, यह नहीं हो सकता है। समस्या हल करने के लिए अपने IEnumerable<T>
वापसी प्रकार बदलने: डी
एक कुछ हद तक संबंधित सवाल (एक नई धागा खोलने के लायक नहीं): यह IEnumerable<T>
एक वापसी प्रकार के रूप में देने के लायक है, तो मुझे यकीन है कि मामलों के 99% मैं कर रहा हूँ है मैं जा रहा हूँ। टोस्टिस्ट() वैसे भी? प्रदर्शन प्रभाव क्या होगा?
मुझे संभावित दृष्टिकोण 'कम चूसने के लिए खोज' पसंद है ;-)। –
यह लगभग समान प्रश्न कुछ अच्छे रेमंड चेन सामानों का एक लिंक है: http://stackoverflow.com/questions/39476/what-is-the-yield-keyword-used-for-in-c –