खोज…


टिप्पणियों

एक पुनरावृत्ति एक विधि है, एक्सेसर या ऑपरेटर को प्राप्त करें, जो उपज कीवर्ड का उपयोग करके किसी सरणी या संग्रह वर्ग पर एक कस्टम पुनरावृत्ति करता है

सिंपल न्यूमेरिक इटरेटर उदाहरण

पुनरावृत्तियों के लिए एक सामान्य उपयोग-मामला संख्याओं के संग्रह पर कुछ ऑपरेशन करना है। नीचे दिए गए उदाहरण से पता चलता है कि कैसे संख्या के प्रत्येक तत्व को व्यक्तिगत रूप से कंसोल में प्रिंट किया जा सकता है।

यह संभव है क्योंकि सरणियाँ IEnumerable इंटरफ़ेस को लागू करती हैं, जिससे क्लाइंट GetEnumerator() विधि का उपयोग करके सरणी के लिए एक पुनरावृत्ति प्राप्त कर सकते हैं। यह विधि एक एन्यूमरेटर लौटाती है, जो कि सरणी में प्रत्येक संख्या पर एक रीड-ओनली, फॉरवर्ड-ओनली कर्सर है।

int[] numbers = { 1, 2, 3, 4, 5 };

IEnumerator iterator = numbers.GetEnumerator();

while (iterator.MoveNext())
{
    Console.WriteLine(iterator.Current);
}

उत्पादन

1
2
3
4
5

यह भी संभव है कि foreach स्टेटमेंट का उपयोग करके वही परिणाम प्राप्त करें:

foreach (int number in numbers)
{
    Console.WriteLine(number);
}

यील्ड का उपयोग करके Iterators बनाना

Iterators enumerators का उत्पादन करते हैं । सी # में, एन्यूमरेटर्स का उत्पादन तरीकों, गुणों या अनुक्रमकों को परिभाषित करके किया जाता है जिसमें yield कथन होते हैं।

अधिकांश तरीके सामान्य return स्टेटमेंट के माध्यम से उनके कॉलर पर नियंत्रण return , जो उस विधि के लिए सभी राज्य स्थानीय को डिस्पोज़ करता है। इसके विपरीत, yield कथनों का उपयोग करने वाले तरीके स्थानीय मानों को उन मूल्यों को वापस करने के बीच स्थानीय राज्य को संरक्षित करते हुए अनुरोध पर कॉलर को कई मान वापस करने की अनुमति देते हैं। ये लौटे मान एक अनुक्रम का गठन करते हैं। पुनरावृत्तियों के भीतर दो प्रकार के yield कथन का उपयोग किया जाता है:

  • yield return , जो कॉल करने वाले पर नियंत्रण लौटाता है, लेकिन राज्य को संरक्षित करता है। जब इस नियंत्रण को वापस पारित किया जाता है तो कैली इस लाइन से निष्पादन जारी रखेगा।

  • yield break , जो सामान्य return स्टेटमेंट के समान कार्य करता है - यह अनुक्रम के अंत को दर्शाता है। सामान्य return स्टेटमेंट अपने आप में एक इटरेटर ब्लॉक के भीतर अवैध हैं।

यह उदाहरण नीचे एक पुनरावृत्ति विधि को प्रदर्शित करता है जिसका उपयोग फाइबोनैचि अनुक्रम उत्पन्न करने के लिए किया जा सकता है:

IEnumerable<int> Fibonacci(int count)
{
    int prev = 1;
    int curr = 1;
    
    for (int i = 0; i < count; i++)
    {
        yield return prev;
        int temp = prev + curr;
        prev = curr;
        curr = temp;
    }
}

इसके बाद इस इटिलेटर का उपयोग फाइबोनैचि अनुक्रम के एक एन्यूमरेटर का उत्पादन करने के लिए किया जा सकता है जिसे कॉलिंग विधि द्वारा खाया जा सकता है। नीचे दिए गए कोड में दर्शाया गया है कि फाइबोनैचि अनुक्रम के भीतर पहले दस शब्दों को कैसे गणना किया जा सकता है:

void Main()
{
    foreach (int term in Fibonacci(10))
    {
        Console.WriteLine(term);
    }
}

उत्पादन

1
1
2
3
5
8
13
21
34
55


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow