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 থ্রো করবে)।