Могут ли индексы массива быть названы в C #? - PullRequest
8 голосов
/ 26 марта 2012

Мне интересно, может ли индекс массива получить имя в C # вместо значения индекса по умолчанию. То, что я в основном ищу, это эквивалент C # следующего PHP-кода:

$array = array(
    "foo" => "some foo value",
    "bar" => "some bar value",
);

Приветствие.

Ответы [ 4 ]

26 голосов
/ 26 марта 2012

PHP объединяет концепцию массивов и концепцию словарей (хеш-таблицы, хэш-карты, ассоциативные массивы) в единый array тип .

В .NET и большинстве других сред программирования массивы всегда индексируются численно. Для именованных индексов используйте словарь вместо:

var dict = new Dictionary<string, string> {
    { "foo", "some foo value" }, 
    { "bar", "some bar value" }
};

В отличие от ассоциативных массивов PHP, словари в .NET не сортируются. Если вам нужен отсортированный словарь (но, вероятно, нет), .NET предоставляет отсортированный словарь типа .

2 голосов
/ 26 марта 2012

В массиве нет.Однако есть очень полезный класс Dictionary, представляющий собой коллекцию объектов KeyValuePair.Он похож на массив в том, что он представляет собой итеративную коллекцию объектов с ключами, но в более общем смысле ключ может быть любого типа.

Пример:

Dictionary<string, int> HeightInInches = new Dictionary<string, int>();
HeightInInches.Add("Joe", 72);
HeightInInches.Add("Elaine", 60);
HeightInInches.Add("Michael", 59);

foreach(KeyValuePair<string, int> person in HeightInInces)
{
    Console.WriteLine(person.Key + " is " + person.Value + " inches tall.");
}

MSDNДокументация для Dictionary<TKey, TValue>

1 голос
/ 26 марта 2012

Посмотрите на Hashtable в C #.Это структура данных, которая делает то, что вы хотите в C #.

0 голосов
/ 26 марта 2012

Вы можете использовать Dictionary<string, FooValue> или аналогичный тип или тип коллекции или, если вам нужно придерживаться массива, определить Enum с вашими метками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...