मैं उत्सुक अगर कोई किसी भी नियम के-अंगूठे या जब यह भावना एक आस्थगित IEnumerable<T>
वापस जाने के लिए या से लौटने से पहले उस पर ToArray()
कॉल करने के लिए बनाया है उनके सर्वोत्तम प्रथाओं है कर रहा हूँ एक समारोह।जब यह बुरा प्रपत्र वापस जाने के लिए है एक आस्थगित IEnumerable <T>
उदाहरण के लिए, एक एपीआई के उपभोक्ता के रूप में मुझे लगता है कि IEnumerable<Widget> GetWidgets()
जैसे HttpException
को फेंकने के लिए मैं इसे पसंद करता हूं और जब मैं परिणामों की गणना कर रहा हूं तो इसे फेंक नहीं देता है।
public IEnumerable<Widget> GetWidgets(IEnumarable<int> widgetIds) {
return widgetIds.Select(id => GetWidgetFromWidgetWebService(id));
}
मैं एक बार ऐसा नहीं सोच सकता कि मैं कभी भी एक स्थगित आईनेमरेबल और बहुत कुछ वापस लौटना चाहता हूं जब मैंने इसे दुर्घटनाग्रस्त कर दिया और कोड के सभी प्रकार तोड़ दिए। – BenCr
लेकिन, किसी भी तरह से फेंक दिया अपवाद नहीं होना चाहिए? कम से कम उस मामले में वे वही काम करेंगे। – rae1
@ rae1n हां, अपवाद किसी भी तरह से फेंक दिया जाएगा, लेकिन कल्पना करें कि एक परिभाषित 'आईनेमेरेबल' एक परत या दो के माध्यम से पारित किया जा रहा है, केवल कॉल-साइट पर एक अपवाद डाला गया है जहां से मूल संग्रह वापस किया गया था। –
joshperry