C# | Multidimensional Indexers

Prerequisite: Indexers in C#

The multi-dimensional indexer is almost similar to multidimensional arrays. For the efficient content-based retrieval of data, multidimensional indexers are used. To create multi-dimensional indexer you have to pass at least two parameters in the argument list of indexer declaration. To access a single element of a multi-dimensional indexer, use integer subscripts. Each subscript indexes a dimension like the first indexes the row dimension, the second indexes the column dimension and so on.

Example 1: Using get and set accessor

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to illustrate the 
// Multidimensional Indexers
using System;
  
  
class GFG {
      
    // reference to underlying 2D array
    int[, ] data = new int[5, 5];
      
      
    // declaring Multidimensional Indexer
    public int this[int index1, int index2]
    {
        // get accessor
        get 
        {
              
             // it returns the values which
            // read the indexes
            return data[index1, index2];
              
        }
          
        // set accessor
        set 
        {
              
            // write the values in 'data'
            // using value keyword
            data[index1, index2] = value;
              
        }
    }
}
  
// Driver Class
class Geeks {
      
      
    // Main Method
    public static void Main(String []args)
    {
          
        // creating the instance of 
        // Class GFG as "index"
        GFG index = new GFG();
          
  
        // assign the values accordingly to
        // the indexes of the array
        // 1st row
        index[0, 0] = 1;
        index[0, 1] = 2;
        index[0, 2] = 3;
          
        // 2nd row
        index[1, 0] = 4;
        index[1, 1] = 5;
        index[1, 2] = 6;
          
        // 3rd row
        index[2, 0] = 7;
        index[2, 1] = 8;
        index[2, 2] = 9;
      
        // displaying the values
        Console.WriteLine("{0}\t{1}\t{2}\n{3}\t{4}\t{5}\n{6}\t{7}\t{8}",
                                  index[0, 0], index[0, 1], index[0, 2],
                                  index[1, 0], index[1, 1], index[1, 2], 
                                  index[2, 0], index[2, 1], index[2, 2]);
      
    }
}

chevron_right


Output:

1    2    3
4    5    6
7    8    9

Example 2: Without using the “set” accessor i.e only using Read-Only Property

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to illustrate the Multidimesional 
// Indexer without using set accessor 
using System;
  
class GFG {
      
    // default constructor
    public GFG() {} 
  
    // Multidimesional Indexer
    public int this[int i1, int i2]
    {
          
        // get accessor
        get 
        {
              
            // read only properties
            return (i1 + i2);
        }
          
        // No set accessor used
    }
  
// Main Method
public static void Main(String []args)
{
      
    // creating object of class
    // "GFG" as "index"
    GFG index = new GFG();
      
    // displaying the values
    for (int i = 0; i <= 2; i++) {
          
        for (int j = 1; j <= 3; j++)
        {
            Console.Write(index[i, j] + "\t");
        }
          
        Console.WriteLine();
    }
}
}

chevron_right


Output:

1    2    3    
2    3    4    
3    4    5


My Personal Notes arrow_drop_up

2nd year student of Information Technology JADAVPUR UNIVERSITY

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.