How to use string to index value in a C# class
String value indexer
We can index value in a class by using string value indexer.
class DayCollection
{//from w ww . j av a2 s . c o m
string[] days = { "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat" };
private int GetDay(string testDay)
{
for(int j = 0; j < days.Length; j++)
{
if (days[j] == testDay)
{
return j;
}
}
throw new System.ArgumentOutOfRangeException(testDay, "testDay must be in the form \"Sun\", \"Mon\", etc");
}
public int this[string day]
{
get
{
return (GetDay(day));
}
}
}
class Program
{
static void Main(string[] args)
{
DayCollection week = new DayCollection();
System.Console.WriteLine(week["Fri"]);
System.Console.WriteLine(week["AAA"]);
}
}
The code above generates the following result.
int and string indexer
using System;//from www . j a v a 2s. c o m
using System.Collections;
using System.Collections.Specialized;
public class MainClass
{
public static void Main()
{
EmployeeList carLot = new EmployeeList();
carLot["A"] = new Employee("A");
carLot["B"] = new Employee("B");
carLot["C"] = new Employee("C");
Employee zippy = carLot["C"];
Console.WriteLine(zippy.Name);
}
}
public class EmployeeList
{
private ListDictionary carDictionary;
public EmployeeList()
{
carDictionary = new ListDictionary();
}
// The string indexer.
public Employee this[string name]
{
get { return (Employee)carDictionary[name];}
set { carDictionary.Add(name, value);}
}
// The int indexer.
public Employee this[int item]
{
get { return (Employee)carDictionary[item];}
set { carDictionary.Add(item, value);}
}
}
public class Employee
{
public string Name = "";
public Employee(string n)
{
Name = n;
}
}
The code above generates the following result.