0

私はC#を初めて使用し、配列を調べています。

与えられた:

int[][] myJagArray = new int[5][];

以下は、各jの内容ではなく、jのタイプ(System.Int32 [])を出力するのはなぜですか?

foreach (int[] j in myJagArray)
{
    Console.WriteLine("j : {0}",j);
}
4

5 に答える 5

5

は配列の内容を返さないためArray.ToString()、型名を返し、パラメータとして送信する各オブジェクトをConsole.WriteLine暗黙的に呼び出します。ToString()

これは、配列が多次元配列の一部であるという事実に関係なく、単純に CLR 開発者が に実装することを選択した (または、実装しないことを選択した) 方法です。ToString()System.Array

于 2013-02-07T17:53:59.123 に答える
1

この場合、j は配列であるため、ToString() メソッドからの出力を出力し、オブジェクトの ToString 実装を使用し、その動作はその型を出力します。

ここであなたがしたいことがあります:

foreach (int[] j in myJagArray)
{
    StringBuilder sb = new StringBuilder("j : ");

    foreach (int k in j)
    {
        sb.append("[").append(k).append("]");
    }

    Console.WriteLine(sb.Tostring());
}
于 2013-02-07T17:55:06.633 に答える
1

の配列を出力していますint

配列内の最初の値を出力するには、次のことを試してください。

Console.WriteLine("j : {0}",j[0]);

内容全体を印刷するには、次の方法をお試しください。

foreach (int[] j in myJagArray)
{
    foreach (int i in j)
    {
        Console.WriteLine("i : {0}",i);
    }
}
于 2013-02-07T17:55:25.210 に答える
0

以下のようにする必要があります

for(int i=0;i<5;i++)
    for( int j=0;j<5;j++)
        print(myjagarray[i][j].tostring());
于 2013-02-07T17:58:26.660 に答える
0

Console.WriteLine を使用して値を出力する場合、実際には最初にその値に対して ToString() を呼び出しており、Array.ToString() は値ではなく型を返します。j の値を出力したい場合は、2 番目のループを実行する必要があります。

foreach (int[] j in myJagArray)
{
    Console.Write("j: ");
    foreach (int i in j)
    {
        Console.Write("{0} ",i);
    }    
    Console.Write("\n");
}
于 2013-02-07T17:58:28.720 に答える