Обращение к элементу массива через имя, а не индекс - C#
Формулировка задачи:
Народ.
Кто может сказать или дать ссылку на информацию как сделать так, чтобы можно было обращаться к элементу массива не через индекс, а через имя.
При работе со стандартными источниками данных, можно обращаться к полям таблиц таким образом: My_tabDataTable.Rows[i]["Field_1"]; Хочу такое же использовать, но как такое сделать не понимаю.
Решение задачи: «Обращение к элементу массива через имя, а не индекс»
textual
Листинг программы
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class Program
{
public class test_class
{
private Dictionary<string, int> tab_key = new Dictionary<string, int>();
public string[] tab;
public test_class()
{
tab = new string[3];
tab[0] = "Васильевич";
tab_key.Add("Вася", 0); //Добавляем запись в словарь
tab[1] = "Петрович";
tab_key.Add("Петя", 1);
tab[2] = "Александрович";
tab_key.Add("Саша", 2); //Так же можно добавить несколько ключей к одному индексу
tab_key.Add("Александр", 2);
}
public string this[string name] //Метод для вызова
{
get
{
return tab[tab_key[name]];
}
set
{
tab[tab_key[name]] = value;
}
}
}
static void Main(string[] args)
{
test_class tab = new test_class();
Console.WriteLine("Отчество детей в зависимости от имени отца");
Console.WriteLine("Вася - " + tab["Вася"]); //Tab["Вася"] Вызовет public string this[string name]
Console.WriteLine("Петя - " + tab["Петя"]);
Console.WriteLine("Саша - " + tab["Саша"]);
Console.WriteLine("Александр - " + tab["Александр"]);
}
}
}