इस obfuscated कोड के इस बिट पर विचार करें। इसका उद्देश्य अज्ञात कन्स्ट्रक्टर और yield return
के माध्यम से फ्लाई पर एक नई वस्तु बनाना है। लक्ष्य केवल return
पर स्थानीय संग्रह को बनाए रखने से बचने के लिए है।सी #: एक foreach के भीतर उपज वापसी विफल रहता है - शरीर एक iterator ब्लॉक नहीं हो सकता
public static List<DesktopComputer> BuildComputerAssets()
{
List<string> idTags = GetComputerIdTags();
foreach (var pcTag in idTags)
{
yield return new DesktopComputer() {AssetTag= pcTag
, Description = "PC " + pcTag
, AcquireDate = DateTime.Now
};
}
}
दुर्भाग्य से, कोड के इस बिट एक अपवाद पैदा करता है:
त्रुटि 28 के शरीर 'Foo.BuildComputerAssets()' पुनरावर्तक ब्लॉक नहीं किया जा सकता क्योंकि 'System.Collections.Generic.List' पुनरावर्तक इंटरफ़ेस प्रकार नहीं है
प्रश्न
- इस त्रुटि संदेश का क्या अर्थ है?
- मैं इस त्रुटि से कैसे बच सकता हूं और
yield return
का उपयोग कैसे कर सकता हूं?