Другие языки программирования и технологии

Подскажите есть ли в c# строковые имена индексов массива как в PHP (пример a["abc"])? если есть то как с ними работать

В C# все есть классы. Массив - тот же самый класс, с подключенным индексатором. Тепреь о последних: индексатор позволяет обращаться к объекту класса как к массиву, передавая в качестве индекса любой тип данных. Что характерно, если тип данных числовой - получается классический массив. Иначе, индекс может быть и строковым.

Это пример класса, который реализует необходимую тебе функциональность:
================================================================

/// <summary>
/// Generic массив со строковой индексацией.
/// </summary>
/// <typeparam>Задает тип ячеек массива</typeparam>
class ArrayEx<t>
{
/// <summary>
/// Маска допустимых строковых индексов.
/// </summary>
private string[] _IndexMask = new string[] { "ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять" };

/// <summary>
/// Внутренний Generic массив.
/// </summary>
private T[] _InternalArray;

/// <summary>
/// Создает новый массив со строковой индексацией.
/// </summary>
/// <param>Передает длину нового массива</param>
public ArrayEx(int Length)
{
// Гарантирует, что длина массива не привысит длину маски.
if (Length < 0 || Length > _IndexMask.Length)
{
_InternalArray = new T[_IndexMask.Length];
return;
}
// Создает новый внутренний массив указанной длины.
_InternalArray = new T[Length];
}

/// <summary>
/// Строковый индексатор для доступа к элементу массива.
/// </summary>
/// <param>Строковый индекс доступа к элементу</param>
/// <returns>Generic значение запрошенной ячейки</returns>
public T this[string Index]
{
get
{
// Проверка корректности строкового индекса.
int pIndex = Array.IndexOf<string>(_IndexMask, Index);
if (pIndex < 0)
{
return default(T);
}
// Чтение ячейки.
return _InternalArray[pIndex];
}
set
{
// Проверка корректности строкового индекса.
int pIndex = Array.IndexOf<string>(_IndexMask, Index);
if (pIndex < 0)
{
return;
}
// Запись ячейки.
_InternalArray[pIndex] = value;
}
}
}

А это пример использования класса:
================================

// Создаем новый объект массив, указывая тип ячеек
ArrayEx<int> pTestArray = new ArrayEx<int>(10);
// Запись ячеек массива
pTestArray["ноль"] = 11;
pTestArray["один"] = 21;
// Чтение ячеек массива
int pValue = pTestArray["ноль"];

З. Ы. : если что-то непонятно, пиши в ICQ: 228004347 или Агент.
Муратбек Нургожанов
Муратбек Нургожанов
7 465
Лучший ответ
Вроде хеш-таблицы для этого имеются.
Рустам Мусин
Рустам Мусин
50 492
Вроде неТ