indexer property in c#

Properties and Indexers in c#

Indexers are a special type of array which is used to treat an object as array. 

We say that indexer is a member which enables an object to be indexed just like array. 

Indexers are permit to instances of a class or Structs to be indexed just like arrays. 

Indexers are similar to properties

Indexer is most useful for looping or iterating or data binding operations in c#.

Syntax declaration of an indexer


public int this[index]
{
  get {  }
  set {  }
}

Modifier can be public, private, protected or internal. Just look like this....

public string Name
{
   get
   {
      return name;
   }
   set
   {
      name = value;
   }
}

The modifier can be private, public, protected, internal.

Indexers cannot be static because static methods do not have access to ‘this’ and ‘this’ keyword indicates an instance of the current class.

Every indexers should accept at least one parameter.

Simple example for display Employee name using Indexer

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Indexers
{
    public class Employee
    {
        public string[] emp_Name = new string[25];
        public string this[int index]
        {
            get
            {
                return emp_Name[index];
            }
            set
            {
                emp_Name[index] = value;
            }
        }
    }

    public class Program
    {
        public static void Main()
        {
            Employee empObject = new Employee();
            empObject[0] = "Anil Singh";
            empObject[1] = "Sunil";
            empObject[2] = "Sushil Kumar";
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine(empObject[i]);
            }               
            Console.ReadLine();
        }
    }
}
              
The OutPut as given below

Anil Singh
Sunil
Sushil Kumar
===============================================

Other detail as given below.
  1. Indexers using Inheritance
  2. The indexers of the base class are inherited in the derived classes.
  3. Simple example for Indexers in Inheritance


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace IndexersInheritance
{

    public class BaseClass
    {
        public int num;
        public int this[int index]
        {
            get
            {               
                return num;
            }
            set
            {               
                num = value;
            }
        }
    }

    public class DerivedClass : BaseClass
    {
      // Anything else here.....
    }
    public class TestClass
    {
        public static void Main()
        {
            DerivedClass DrivObj = new DerivedClass();
            DrivObj[0] = 786;
            Console.WriteLine("The Value is = " + DrivObj[0]);
            Console.Read();
        }
    }
}
              
The OutPut as given below

The Value is = 786
==============================================

Indexers using interface

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


interface I1
{
    int this[int num] { get; set; }
}

public class InterfaceImplement : I1
{
    int[] d = { 0, 1, 2, 3 };
    public int this[int num]
    {
        get
        {
            return this.d[num];
        }
        set
        {
            this.d[num] = value;
        }
    }
}

public class Program
{
    static void Main()
    {
        I1 i1Obj = new InterfaceImplement();
        Console.WriteLine(i1Obj[0]);
        Console.WriteLine(i1Obj[1]);
        Console.WriteLine(i1Obj[2]);
        Console.WriteLine(i1Obj[3]);
        Console.Read();
    }
}

              
The OutPut as given below

0

1

2

3
============================================

Indexers can be Abstract

Simple example for Abstract Indexers

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

abstract class BaseClass
{
    protected int num;

    public abstract int this[int index]
    {
        get;
        set;
    }
}

class DerivedClass : BaseClass
{
    public override int this[int index]
    {
        get
        {
            return num;
        }
        set
        {
            num = value;
        }
    }
}

class TestClass
{
    public static void Main()
    {
        DerivedClass objDeriv = new DerivedClass();
        objDeriv[0] = 786;
        Console.WriteLine("The value is = " + objDeriv[0]);
        Console.Read();
    }
}
              
The OutPut as given below

The value is = 786


ANIL SINGH

Hey! I'm Anil Singh. I author this blog. I'm Active Blogger, Programmer. I love learning new technologies, programming, blogging and participating the forum discussions more...
My Blogs - http://www.code-sample.com and http://www.code-sample.xyz
My Books - Google Amazon and Flipkart Book Store!

You Might Also Like
Post a Comment
www.code-sample.com/. Powered by Blogger.
ASK Questions
SQL Server NodeJs TypeScript JavaScript Angular SQL Server My Book