Indexing with Multiple Parameters : Indexer « Class « C# / CSharp Tutorial






using System;

public class Cell
{
    string name;
    
    public Cell(string name)
    {
        this.name = name;
    }
    
    public override string ToString()
    {
        return(name);
    }
}

public class Table
{
    Cell[,] table = new Cell[8, 8];
    
    int RowToIndex(string row)
    {
        string temp = row.ToUpper();
        return((int) temp[0] - (int) 'A');
    }
    
    int PositionToColumn(string pos)
    {
        return(pos[1] - '0' - 1);
    }
    
    public Cell this[string row, int column]
    {
        get
        {
            return(table[RowToIndex(row), column - 1]);
        }
        set
        {
            table[RowToIndex(row), column - 1] = value;
        }
    }    
    
    public Cell this[string position]
    {
        get
        {
            return(table[RowToIndex(position),
            PositionToColumn(position)]);
        }
        set
        {
            table[RowToIndex(position),
            PositionToColumn(position)] = value;
        }
    }    
}
class MainClass
{
    public static void Main()
    {
        Table table = new Table();
        
        table["A", 4] = new Cell("A4");
        table["H", 4] = new Cell("H4");
        
        Console.WriteLine("A4 = {0}", table["A", 4]);
        Console.WriteLine("H4 = {0}", table["H4"]);
    }
}
A4 = A4
H4 = H4








7.40.Indexer
7.40.1.Creating One-Dimensional Indexers
7.40.2.Indexing with an Integer Indexer
7.40.3.Indexing with an String Indexer
7.40.4.Indexing with Multiple Parameters
7.40.5.Define both int and string indexer for a class
7.40.6.Use indexer to add element
7.40.7.Define getter only indexer
7.40.8.Use an indexer to create a fail-soft array.
7.40.9.Overload the MyArray indexer
7.40.10.Indexers don't have to operate on actual arrays
7.40.11.Indexer based on 0 or non-zero
7.40.12.Indexer based on switch statement
7.40.13.Indexer for generic type
7.40.14.Using a string as an indexer value