-3

以下のようなphpコードがあります

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

x++;

質問: C# で上記のようなコードを作成したいのですが、すべて問題ありませんが、ギザギザ配列のステップで、C# でこのように同じことを行う方法がわかりません。つまり、配列のインデックスは文字列値です。

4

1 に答える 1

2

ジャグ配列を実現する 1 つの方法は、ディクショナリです。以下のコードに基づいたものから始めることができます。

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;
}

編集:

質問の最初のバージョンのコードを取得し、未指定の型がすべて文字列であると仮定して、C# に変換しようとしました。呼び出されたルーチンpreg_replaceは指定されていませんが、3 つの文字列を取り、1 つを返すように見えました。

元の質問には、整数として$x = 0;定義して初期化するように見える行があります。$x行は、指定された整数インデックスで空の配列を参照するように作成されている$array[$x] = array();と言っているように見えます。$array次に、その配列の要素を文字列に$array[$x]["no"]設定します。"no"私が提案した C# はarray、辞書の配列として宣言します。AC# 辞書は連想配列の形式で、Perl 言語では「ハッシュ」と呼ばれます。コード全体が構造体に値を書き込み、パラメーターで見つかった値から効果的に初期化しますMyMethod

他の場所では、実際の配列array = new Dictionary<string, string>[gotovalue]を参照するなどのステートメントが必要になります。array

于 2013-06-02T12:22:57.537 に答える