Помогите мне преобразовать этот 2d код массива из PHP в C # - PullRequest
0 голосов
/ 05 февраля 2010

Пожалуйста, помогите мне переписать этот пример кода на PHP на C #:

$stringArray = array();
$stringArray['field1'] = 'value1';
$stringArray['field2'] = 'value2';
$stringArray['field3'] = 'value3';

foreach ($stringArray as $key => $value)
{
    echo $key . ': ' . $value;
    echo "\r\n";
}

Ответы [ 3 ]

5 голосов
/ 05 февраля 2010

Именованные массивы не существуют в C #. Альтернативой является использование Dictionary<string, string> для воссоздания аналогичной структуры.

Dictionary<string, string> stringArray = new Dictionary<string, string>();
stringArray.Add("field1", "value1");
stringArray.Add("field2", "value2");
stringArray.Add("field3", "value3");

Чтобы выполнить их итерацию, вы можете использовать следующее:

foreach( KeyValuePair<string, string> kvp in stringArray ) {
    Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
}
1 голос
/ 05 февраля 2010
var map = new Dictionary<String, String>
              {
                  { "field1", "value1" },
                  { "field2", "value2" },
                  { "field3", "value3" }
              }

Или без инициализатора коллекции.

var map = new Dictionary<String, String>();

map["field1"] = "value1";
map["field2"] = "value2";
map["field3"] = "value3";

Существует даже специализированный класс StringDictionary для сопоставления строк со строками в часто пропускаемом пространстве имен System.Collections.Specialized, но я предпочитаю Dictionary<TKey, TValue>, поскольку он реализует более богатый набор интерфейсов.

0 голосов
/ 05 февраля 2010

Вы пытаетесь воссоздать ассоциативный массив - в C # я обычно использовал бы словарь

Dictionary<string,string> stringArray = new Dictionary<string,string>();

и затем вы можете присвоить значения двумя способами

stringArray["field1"] = "value1";
stringArray.Add("field2","value2");

Словари можно использовать для хранения любой комбинации пары ключ / значение, например:

Dictionary<int,string>()
Dictionary<long,KeyValuePair<string,long>>()
etc.

Если вы абсолютно уверены, что вам нужен только ключ, представляющий собой строку, которая будет возвращать значение, являющееся строкой, тогда вы также можете использовать NameValueCollection

NameValueCollection stringArray = new NameValueCollection();

и снова вы можете использовать те же два метода для добавления значений

stringArray["field1"] = "value1";
stringArray.Add("field2","value2");

Оба типа данных также имеют другие удобные методы, такие как

stringArray.Clear(); // make it empty
stringArray.Remove("field1"); // remove field1 but leave everything else

проверь свою интеллигентность в визуальной студии, чтобы узнать больше хороших вещей

Дополнительные узлы

Обратите внимание, что NameValueColelction не обеспечивает (исключительно) сопоставление один-к-одному - вы можете связать несколько значений с одним именем.

var map = new NameValueCollection();

map.Add("Bar", "Foo");
map.Add("Bar", "Buz");

// Prints 'Foo,Buz' - the comma-separated list of all values
// associated with the name 'Bar'.
Console.WriteLine(map["Bar"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...