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

C#-এ Array.GetEnumerator() মেথড: অ্যারে জন্য IEnumerator পেতে


C#-এ Array.GetEnumerator() মেথডটি অ্যারের জন্য একটি IEnumerator অবজেক্ট ফেরত দেয়, যা অ্যারের উপাদানগুলো কালক্রমিকভাবে (sequentially).iterate করার সুযোগ দেয়। এটি IEnumerable ইন্টারফেসের অংশ।

সিনট্যাক্স (Syntax)

public virtual System.Collections.IEnumerator GetEnumerator();

উদাহরণ: IEnumerator ব্যবহার করে ইটারেশন

using System;
using System.Collections;

public class Demo
{
    public static void Main()
    {
        int j = 0;
        Console.WriteLine("Array elements...");
        string[] arr = { "car", "bike", "truck", "bus" };
        
        for (int i = 0; i < arr.Length; i++)
        {
            Console.Write("{0} ", arr[i]);
        }
        Console.WriteLine();
        
        // IEnumerator পাওয়া
        IEnumerator newEnum = arr.GetEnumerator();
        Console.WriteLine("IEnumerator for the Array...");
        
        // MoveNext() এবং Current ব্যবহার করে ইটারেশন
        while ((newEnum.MoveNext()) && (newEnum.Current != null))
        {
            Console.WriteLine("[{0}] {1}", j++, newEnum.Current);
        }
    }
}

আউটপুট

Array elements...
car bike truck bus
IEnumerator for the Array...
[0] car
[1] bike
[2] truck
[3] bus

IEnumerator ইন্টারফেসের সদস্যরা

সদস্যবর্ণনা
MoveNext()পরবর্তী উপাদানে যাওয়া। সফল হলে true, শেষ হলে false
Currentবর্তমান উপাদান (object টাইপে)
Reset()এনুমেরেটরকে শুরুতে ফেরত আনা

foreach লুপ vs GetEnumerator()

foreach লুপ আসলে GetEnumerator()-কে আंतरিকভাবে কল করে:

foreach (সহজ এবং সুপারিশকৃত)

string[] arr = { "car", "bike", "truck", "bus" };
foreach (string item in arr)
{
    Console.WriteLine(item);
}

ম্যানুয়াল IEnumerator (নিচের স্তরের নিয়ন্ত্রণ)

IEnumerator enumerator = arr.GetEnumerator();
try
{
    while (enumerator.MoveNext())
    {
        string item = (string)enumerator.Current; // キャスト প্রয়োজন
        Console.WriteLine(item);
    }
}
finally
{
    // IDisposable ইমপ্লিমেন্ট করা থাকলে Dispose() কল করুন
    (enumerator as IDisposable)?.Dispose();
}

জেনেরিক IEnumerator<T> (টাইপ-সেফ)

অ্যারে IEnumerable<T> ইমপ্লিমেন্ট করে, তাই জেনেরিক এনুমেরেটরও পাওয়া যায়:

using System.Collections.Generic;

string[] arr = { "car", "bike", "truck", "bus" };
IEnumerator enumGeneric = ((IEnumerable)arr).GetEnumerator();

while (enumGeneric.MoveNext())
{
    string item = enumGeneric.Current; // কোনো キャスト প্রয়োজন নেই
    Console.WriteLine(item);
}

প্রয়োগিক ব্যবহার: কাস্টম ইটারেশন লজিক

public static void ProcessWithDelay(T[] array, Action action, int delayMs)
{
    IEnumerator enumerator = ((IEnumerable)array).GetEnumerator();
    
    while (enumerator.MoveNext())
    {
        action(enumerator.Current);
        Thread.Sleep(delayMs); // প্রতিটি উপাদানের মাঝে ডিলে
    }
}

// ব্যবহার
string[] messages = { "Step 1", "Step 2", "Step 3" };
ProcessWithDelay(messages, Console.WriteLine, 1000);

সারসংক্ষেপ: সাধারণ প্রোগ্রামিং-এ foreach ব্যবহার করুন। কাস্টম ইটারেশন লজিক (ফিল্টারিং, ডিলে, প্যারালেল প্রসেসিং) আপনার জন্য GetEnumerator() সরাসরি কল করুন।

  1. জাভাস্ক্রিপ্ট Array.join() মেথড

  2. জাভাস্ক্রিপ্ট Array.isArray() মেথড

  3. জাভাস্ক্রিপ্ট array.includes() মেথড

  4. জাভাস্ক্রিপ্ট array.keys() মেথড