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

C#-এ ওভারলোডেড ইনডেক্সার (Overloaded Indexers) কী


C#-এ একটি ইনডেক্সার একটি অবজেক্টকে অ্যারে মতো ইনডেক্স করার অনুমতি দেয়। যখন একটি ক্লাসের জন্য ইনডেক্সার ডিফাইন করা হয়, তবে এই ক্লাসটি একটি ভার্চুয়াল অ্যারে처럼 বিহেভ করে। আপনি তারপর এই ক্লাসের ইনস্ট্যান্সকে অ্যারে অ্যাক্সেস অপারেটর ([ ]) ব্যবহার করে অ্যাক্সেস করতে পারেন।

ইনডেক্সার ওভারলোড করা যায়। ইনডেক্সার একাধিক প্যারামিটারসহ ডিক্লেয়ার করা যায় এবং প্রতিটি প্যারামিটার ভিন্ন টাইপের হতে পারে।

ওভারলোডেড ইনডেক্সার উদাহরণ

using System;

namespace IndexerApplication
{
    class IndexedNames
    {
        private string[] namelist = new string[size];
        static public int size = 10;

        public IndexedNames()
        {
            for (int i = 0; i < size; i++)
            {
                namelist[i] = "N. A.";
            }
        }

        public string this[int index]
        {
            get
            {
                string tmp;
                if (index >= 0 && index <= size - 1)
                {
                    tmp = namelist[index];
                }
                else
                {
                    tmp = "";
                }
                return (tmp);
            }
            set
            {
                if (index >= 0 && index <= size - 1)
                {
                    namelist[index] = value;
                }
            }
        }

        public int this[string name]
        {
            get
            {
                int index = 0;
                while (index < size)
                {
                    if (namelist[index] == name)
                    {
                        return index;
                    }
                    index++;
                }
                return index;
            }
        }

        static void Main(string[] args)
        {
            IndexedNames names = new IndexedNames();
            names[0] = "John";
            names[1] = "Joe";
            names[2] = "Graham";
            names[3] = "William";
            names[4] = "Jack";
            names[5] = "Tom";
            names[6] = "Tim";
            // using the first indexer with int parameter
            for (int i = 0; i < IndexedNames.size; i++)
            {
                Console.WriteLine(names[i]);
            }
            // using the second indexer with the string parameter
            Console.WriteLine(names["Nuha"]);
            Console.ReadKey();
        }
    }
}

আউটপুট

John
Joe
Graham
William
Jack
Tom
Tim
N. A.
N. A.
N. A.
10

  1. C#-এ নেমস্পেস (Namespaces) কী?

  2. C#-এ ডাইনামিক অ্যারে (Dynamic Arrays) কী?

  3. C#-এ কনটেক্সচুয়াল কীওয়ার্ড (Contextual Keywords) কী?

  4. C#-এ কন্ডিশনাল অ্যাট্রিবিউটস (Conditional Attributes) কী?