2013-06-02 1 views
-3

У меня есть код PHP, как показано нижеC# Как создать индекс типа строка в массиве зубчатым

$array[$x] = array(); 
    $array[$x]["no"] = $no; 
    $array[$x]["cid"] = $cid; 
    $array[$x]["wait"] = $wait; 
    $array[$x]["prio"] = $prio; 
    $array[$x]["debug"] = $command[$i]; 

х ++;

Вопрос: Я хочу иметь аналогичный код, как указано выше, на C#, все хорошо, но на шаге массива jagged, я смущен, как делать то же самое, что и на C#. Может ли кто-нибудь помочь мне в этом отношении? То есть индекс массива - это строковое значение.

+1

Мы не знаем, что ваш PHP должен делать, что делает его очень трудным для тех, кто не знает * и * PHP и C#, чтобы помочь вам. –

+3

Я считаю, что массивы PHP - это просто хеш-таблицы, поэтому похоже, что вы хотите использовать словарь > 'вместо массива в C#. – Lee

ответ

2

Одним из способов достижения зубчатого массива является словарь. Что-то, основанное на приведенном ниже коде, может помочь вам начать.

Dictionary<string, string>[] array; 

void MyMethod(int[] ckeys, int gotovalue, string[] command) 
{ 
    int x = 0; 
    for(int ii = (ckeys[0] + 1); ii < gotovalue; ii++) 
    { 
     string no = preg_replace(" .*", "", command[ii]); 
     string temp = preg_replace("^[0-9]*. ", "", command[ii]); 
     string cid = preg_replace(" (.*", "", temp); 
     temp = preg_replace(".* (wait: ", "", command[ii]); 
     string wait = preg_replace(",.*", "", temp); 
     temp = preg_replace(".*, prio: ", "", command[ii]); 
     string prio = preg_replace(").*", "", temp); 

     array[x] = new Dictionary<string, string>(); 
     array[x]["no"] = no; 
     array[x]["cid"] = cid; 
     array[x]["wait"] = wait; 
     array[x]["prio"] = prio; 
     array[x]["debug"] = command[ii]; 

     x++; 
    } 
} 

string preg_replace(string aa, string bb, string cc) 
{ 
    return aa + bb + cc; 
} 

Edit:

Я взял код в первоначальной версии этого вопроса и попытался превратить его в C#, если предположить, что все неопределенные типы были строки. Вызываемая подпрограмма preg_replace не была указана, но, похоже, она взяла три строки и вернула их.

Оригинальный вопрос имеет строку $x = 0;, которая, как представляется, определяет $x как целое число и инициализирует его. Строка $array[$x] = array();, по-видимому, говорит о том, что $array при заданном индексе целого числа ссылается на пустой массив. Затем строка $array[$x]["no"] устанавливает элемент "no" этого массива в строку. Предлагаемый мной C# объявляет array как массив словарей. Словарь C# представляет собой форму ассоциативного массива, в языке Perl он будет называться «хэш». Вся часть кода будет записывать значения в структуру, эффективно инициализируя ее из значений, найденных в параметрах, до MyMethod.

В другом месте понадобится инструкция, такая как array = new Dictionary<string, string>[gotovalue], чтобы сделать array ссылкой на фактический массив.

+0

Действительно ли это работает? Я пробовал это, но как можно инициализировать массив, например, тип данных словаря в C#? Это не делает чувства? – Aemz

+0

@Aemz Я добавил несколько объяснений в свой ответ. Какой аспект ответа не имеет смысла? – AdrianHHH

+0

Это говорит о применении неназначенного локального массива 'array', как бы я ни был инициализирован так же, как и после объявления целого x? Я думаю, что в словаре нет инициализации типа массива, поэтому я сказал, что это не имеет смысла. – Aemz