2011-12-15 18 views
5

मैं कुछ प्रकार के इटरेटर/एन्यूमेरेटर की तलाश में हूं जो बैकिंग संग्रह को लिख सकते हैं। जैसा कि मैं समझता हूं कि सी # एन्युमेटर केवल पढ़ने के लिए हैं।क्या एसटीएल आउटपुट इटरेटर के बराबर सी # # है?

उत्तर

2

ऐसी चीज करने के लिए सी # में पहले से मौजूद कुछ भी नहीं है।

आप सही हैं Inumerator की वर्तमान संपत्ति केवल गेटटर के रूप में परिभाषित की गई है।

आपको ऐसी चीज का समर्थन करने के लिए एक नई कक्षा और/या इंटरफ़ेस लिखना होगा।

interface IOutputable<T> { 
    IOutputer<T> GetOutputer(); 
    } 

interface IOutputer<T> { 

    T Current { set; } 

    bool MoveNext(); 
    void Reset(); 
    } 
2

AFAIK आउटपुट इटरेटर ऑब्जेक्ट्स का अनुक्रम बनाने का एक तरीका है। सी # में ऐसा करने के कई तरीके हैं। उदाहरण के लिए, Stack का उपयोग करना। इसके बजाय एक C++ शैली वेतन वृद्धि करने का/आवंटित आपरेशन आप एक धक्का करना चाहते हैं:

var sequence = new Stack<int>(); 
sequence.Push(1); 
sequence.Push(2); 

जब तक आप इसके लिए एक बहुत ही विशेष आवेदन किया है, तो शायद सी # में उत्पादन iterators का अनुकरण करने की कोशिश कर में कोई लाभ नहीं है।

+0

यह स्वीकार्य उत्तर होना चाहिए। MerickowA का दृष्टिकोण काम कर सकता है, लेकिन यह चीजों को करने का सी # तरीका नहीं है। – dan04

0

आप जो करने की कोशिश कर रहे हैं उसके आधार पर, yield return जो भी आप खोज रहे हैं वह कर सकता है।

संबंधित मुद्दे