एसओ पर दो बार पूछा गया है कि आप एक बिडरेक्शनल एन्यूमेरेटर (here, here) को कैसे कार्यान्वित कर सकते हैं। मेरा सवाल (जो ज्यादातर मामलों के लिए तुच्छ है), लेकिन क्यों .NET प्लेटफ़ॉर्म में ऐसा कोई प्रकार मौजूद नहीं है।.NET के पास बिडरेक्शनल एन्युमरेटर क्यों नहीं है?
public interface IBidirectionalEnumerator<T> : IEnumerator<T>
{
bool MovePrev();
}
जाहिर है, वहाँ कई संग्रह प्रकार जो इस लागू नहीं कर सकते, के रूप में MoveNext()
विनाशकारी है या अंतर्निहित संग्रह की स्थिति में परिवर्तन कर रहे हैं। लेकिन इसके विपरीत, कई प्रकार इस trivially लागू कर सकते हैं (List
, IList
, LinkedList
, array
)।
ऐसा कोई प्रकार क्यों मौजूद नहीं है?
आपके संग्रह डिज़ाइन के साथ कुछ गड़बड़ है यदि इसकी गणना करने से इसकी स्थिति बदल जाती है। – Joren
सहमत हुए। लेकिन वास्तव में कुछ संग्रह हैं जो एक स्टैक या कतार की तरह गणना करते समय शॉल बदलते हैं। –
जब तक आप एक स्ट्रीमिंग प्रकार या स्ट्रीमस्ट्रियर या फ़ाइलों की सूची जैसे सिस्टम पुनर्विक्रय पर लिपटे आईन्यूमेरेबल का उपयोग नहीं करते हैं। –