C# Indexers

Introduction to C# Indexers

C# में indexers के द्वारा आप किसी class और structs के object को array की तरह use कर सकते है। उदाहरण के लिए आप किसी class में एक array define करते है। उस array को आप directly use ना करके उसके लिए एक indexer define कर सकते है।

Indexer array में values set करने और उससे values retrieve करने के लिए code define करता है। Indexer define करने के बाद आप उस class का object create कर सकते है और उस object को इस प्रकार use कर सकते है जैसे की आप class में define किये गए array को ही use कर रहे हो।

Indexers में store की गयी values को बिना उनके member का नाम specify किये आप set और access कर सकते है। यानी की class में declare किये गए जिस array के लिए आपने indexer define किया है उसमें value set करने और access करने के लिए आपको उस array के नाम की आवश्यकता नहीं होती है।

Indexers properties की तरह ही होते है। इनमें फर्क सिर्फ इतना होता है की indexers के accessors (set & get) में parameters pass किये जा सकते है। इसके अलावा indexers को overload भी किया जा सकता है।

Indexers को मुख्यतः ऐसी classes और structs में define किया जाता है जिनका मुख्य उद्देश्य उनमें define किये गए array या collection को encapsulate (hide) करना होता है। यानी की आप array या collection का type और उसकी functionlity hide कर लेते है और सिर्फ वह medium provide करते है जिससे उनके साथ work किया जा सकता है।

Syntax of C# Indexers

C# में indexers को declare करने का general syntax निचे दिया जा रहा है।

public type-of-array this[int index]
{
      get
     {
         //Code for access values
     }

     set
     {
         //Code for setting values with value keyword
     }

}

जैसा की आप ऊपर दिए गए syntax में देख सकते है indexer को define करने के लिए this keyword का प्रयोग किया जाता है। Indexer को public define किया जाना आवश्यक होता है ताकि इसे class object द्वारा access किया जा सके।

Indexer में parameter के रूप में एक int variable define किया जाता है। यह वह index number होता है जिसके माध्यम से अलग अलग elements को access किया जाता है। यदि आप two dimensional array use कर रहे है तो indexer एक से अधिक parameters भी accept कर सकता है।

यदि आप class में एक से अधिक indexers define करते है तो उनका signature अलग अलग होना चाहिए। यानी की indexer type और उनका parameter type अलग अलग होना चाहिए।

Indexer में get accessor value return करता है और set accessor array indexes को values assign करता है।

Example of C# Indexers

C# में indexers के use को निचे उदाहरण द्वारा समझाया जा रहा है।

using System;

class indexerDemo
{
    private int[] nums = new int[5];

    public int this[int i]
    {
        get
        {
             return nums[i];
        }

        set
        {
              nums[i]=value;
        }
    }
}

class indexerDemoFinal
{
    static void Main(string[] args)
    {
         indexerDemo obj = new indexerDemo();

         obj[0]=101;
         obj[1]=102;
         obj[2]=103;
         obj[3]=104;
         obj[4]=105;

        for(int i=0;i<4;i++)
        {
           Console.WriteLine(obj[i]);
        }
    }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

101
102
103
104
105