2013-02-07 177 views
0

我是C#的新手,正在查看數組。C#多維數組迭代

考慮:

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

爲什麼下面的打印類型 j的(System.Int32 []),而不是每個J的內容是什麼?

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

回答

5

因爲Array.ToString()不返回內容的數組,它返回類型名稱,Console.WriteLine隱式調用每個ToString()對象,你把它作爲一個參數。

這沒有考慮到一個事實,即所述陣列是多維陣列的一部分,它是簡單地將CLR開發人員選擇的方式(或者說,選擇於)執行關於System.ArrayToString()

1

它打印來自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()); 
} 
1

你打印出的int陣列。

請嘗試以下方法打印數組中的第一個值:

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

要打印的全部內容,你可能想嘗試以下操作:

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

你應該做像下面

for(int i=0;i<5;i++) 
    for(int j=0;j<5;j++) 
     print(myjagarray[i][j].tostring()); 
0

當你使用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"); 
}