私はC#を初めて使用し、配列を調べています。
与えられた:
int[][] myJagArray = new int[5][];
以下は、各jの内容ではなく、jのタイプ(System.Int32 [])を出力するのはなぜですか?
foreach (int[] j in myJagArray)
{
Console.WriteLine("j : {0}",j);
}
私はC#を初めて使用し、配列を調べています。
与えられた:
int[][] myJagArray = new int[5][];
以下は、各jの内容ではなく、jのタイプ(System.Int32 [])を出力するのはなぜですか?
foreach (int[] j in myJagArray)
{
Console.WriteLine("j : {0}",j);
}
は配列の内容を返さないためArray.ToString()
、型名を返し、パラメータとして送信する各オブジェクトをConsole.WriteLine
暗黙的に呼び出します。ToString()
これは、配列が多次元配列の一部であるという事実に関係なく、単純に CLR 開発者が に実装することを選択した (または、実装しないことを選択した) 方法です。ToString()
System.Array
この場合、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());
}
の配列を出力していますint
。
配列内の最初の値を出力するには、次のことを試してください。
Console.WriteLine("j : {0}",j[0]);
内容全体を印刷するには、次の方法をお試しください。
foreach (int[] j in myJagArray)
{
foreach (int i in j)
{
Console.WriteLine("i : {0}",i);
}
}
以下のようにする必要があります
for(int i=0;i<5;i++)
for( int j=0;j<5;j++)
print(myjagarray[i][j].tostring());
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");
}