কম্পিউটার টিউটোরিয়াল

C#-এ List-এ ইনুমেরেটর পাওয়া (GetEnumerator)


C#-এ List<T>.GetEnumerator() মেথডটি একটি ইনুমেরেটর (enumerator) রিটার্ন করে যা List-এ থাকা এলিমেন্টগুলোর মাধ্যমে ইটারেট (iterate) করতে ব্যবহৃত হয়। এটি IEnumerable<T> ইন্টারফেস বাস্তবায়নের অংশ।

উদাহরণ ১: দুটি List এবং ইনুমেরেটর ব্যবহার

using System; 
using System.Collections.Generic; 
public class Demo { 
    public static void Main(String[] args){ 
        List<String> list1 = new List<String>(); 
        list1.Add("One"); 
        list1.Add("Two"); 
        list1.Add("Three"); 
        list1.Add("Four"); 
        list1.Add("Five"); 
        Console.WriteLine("Elements in List1..."); 
        foreach (string res in list1){ 
            Console.WriteLine(res); 
        } 
        List<String> list2 = new List<String>(); 
        list2.Add("India"); 
        list2.Add("US"); 
        list2.Add("UK"); 
        list2.Add("Canada"); 
        list2.Add("Poland"); 
        list2.Add("Netherlands"); 
        Console.WriteLine("Elements in List2..."); 
        List<String>.Enumerator demoEnum = list2.GetEnumerator(); 
        while (demoEnum.MoveNext()) { 
            string res = demoEnum.Current; 
            Console.WriteLine(res); 
        } 
        Console.WriteLine("Is List2 equal to List1? = " + list2.Equals(list1)); 
    } 
}

আউটপুট

Elements in List1... 
One 
Two 
Three 
Four 
Five 
Elements in List2... 
India 
US 
UK 
Canada 
Poland 
Netherlands 
Is List2 equal to List1? = False

উদাহরণ ২: বড় List-এ ইনুমেরেটর ব্যবহার

using System; 
using System.Collections.Generic; 
public class Demo { 
    public static void Main(String[] args){ 
        List<String> list = new List<String>(); 
        list.Add("One"); 
        list.Add("Two"); 
        list.Add("Three"); 
        list.Add("Four"); 
        list.Add("Five"); 
        list.Add("Six"); 
        list.Add("Seven"); 
        list.Add("Eight"); 
        list.Add("Nine"); 
        list.Add("Ten"); 
        Console.WriteLine("Enumerator iterates through the list elements..."); 
        List<String>.Enumerator demoEnum = list.GetEnumerator(); 
        while (demoEnum.MoveNext()) { 
            string res = demoEnum.Current; 
            Console.WriteLine(res); 
        } 
    } 
}

আউটপুট

Enumerator iterates through the list elements... 
One 
Two 
Three 
Four 
Five 
Six 
Seven 
Eight 
Nine 
Ten

ইনুমেরেটর প্যাটার্ন

// স্ট্যান্ডার্ড প্যাটার্ন
List<T>.Enumerator enumerator = list.GetEnumerator();
try {
    while (enumerator.MoveNext()) {
        T current = enumerator.Current;
        // current নিয়ে কাজ করুন
    }
} finally {
    enumerator.Dispose(); // জরুরি নয় স্ট্রাকচার (struct) হলে, কিন্তু ভালো অভ্যাস
}

// foreach লুপ এটি স্বয়ংক্রিয়ভাবে হ্যান্ডেল করে
foreach (T item in list) {
    // item নিয়ে কাজ করুন
}

মূল পয়েন্টস

  • GetEnumerator() একটি List<T>.Enumerator স্ট্রাকচার (struct) রিটার্ন করে।
  • MoveNext() মেথড পরবর্তী এলিমেন্টে যাওয়ার চেষ্টা করে, সাফল্যে true রিটার্ন করে।
  • Current প্রপার্টি বর্তমান এলিমেন্টটি রিটার্ন করে।
  • foreach লুপ কম্পাইলারের দ্বারা ইনুমেরেটর প্যাটার্নে রূপান্তরিত হয়।
  • ইনুমেরেটর ব্যবহার করার সময় কালেকশন মডিফাই করা উচিত নয় (InvalidOperationException থ্রো করবে)।
  1. C#-এ StringCollection-এর মাধ্যমে পুনরাবৃত্তি করার জন্য এনুমারেটর পান

  2. সি শার্প প্রোগ্রাম: লিস্ট থেকে প্রথম তিনটি উপাদান পাওয়ার পদ্ধতি

  3. C#-এ লিস্ট থেকে রেঞ্জ অনুযায়ী উপাদান পাওয়া

  4. C#-এ Dictionary থেকে কীগুলোর লিস্ট পাওয়া