我是C#的新手,正在查看數組。C#多維數組迭代
考慮:
int[][] myJagArray = new int[5][];
爲什麼下面的打印類型 j的(System.Int32 []),而不是每個J的內容是什麼?
foreach (int[] j in myJagArray)
{
Console.WriteLine("j : {0}",j);
}
我是C#的新手,正在查看數組。C#多維數組迭代
考慮:
int[][] myJagArray = new int[5][];
爲什麼下面的打印類型 j的(System.Int32 []),而不是每個J的內容是什麼?
foreach (int[] j in myJagArray)
{
Console.WriteLine("j : {0}",j);
}
因爲Array.ToString()
不返回內容的數組,它返回類型名稱,Console.WriteLine
隱式調用每個ToString()
對象,你把它作爲一個參數。
這沒有考慮到一個事實,即所述陣列是多維陣列的一部分,它是簡單地將CLR開發人員選擇的方式(或者說,選擇不於)執行關於System.Array
ToString()
。
它打印來自ToString()方法的輸出,因爲j在本例中是一個數組,它使用Object 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()on該值,而Array.ToString()不會返回值,而是返回類型。如果要輸出j的值,則需要運行第二個循環:
foreach (int[] j in myJagArray)
{
Console.Write("j: ");
foreach (int i in j)
{
Console.Write("{0} ",i);
}
Console.Write("\n");
}