2011-10-20 169 views
1
private Magazine[,] [] myMags; 

我想擁有一個包含雜誌[14,14]的二維數組的1d數組(長度爲5)。 這樣我就可以走(即一維數組中的每個元素引用與14×14(= 196本雜誌的二維數組)):2d陣列的鋸齒陣列

myMags[0] = new Magazine[14,14]; 
myMags[1] = new Magazine[14,14]; 
myMags[2] = new Magazine[14,14]; 
myMags[3] = new Magazine[14,14]; 
myMags[4] = new Magazine[14,14]; 

什麼是正確的語法來初始化和以這種方式分配的元素?

+1

爲什麼你需要或想要的,二維數組的一維數組,VS一個真正的3D陣列? – ssube

回答

3
Magazine[][,] myMags = new Magazine[5][,]; 
    myMags[0] = new Magazine[14, 14]; 
    myMags[1] = new Magazine[14, 14]; 
    myMags[2] = new Magazine[14, 14]; 
    myMags[3] = new Magazine[14, 14]; 
    myMags[4] = new Magazine[14, 14]; 
+0

這是正確的。括號中的順序在C#中有些令人困惑。請注意,在CLR中,順序是不同的,並且更合理。例如,如上面的'myMag','myMags.GetType()。Name'將返回''雜誌[,] []「',而不是''雜誌[ ] [,]「',所以'typeof(Magazine [,] [])。Name ==」Magazine [] [,]「'。 –

0

我相信這會工作

private Magazine[,,] myVarName = new Magazine[4,14,14]; 

參考http://msdn.microsoft.com/en-us/library/2yd9wwz4(v=VS.100).aspx

+1

這不能編譯,但是'Magazine [] [,] myVarName = new [] {new Magazine [14,14],...};' –

+0

對,你有一個2d數組的數組我給了一個例子3d陣列。 – Hogan

+1

霍根,這個問題是如果你想傳遞一個單一的二維數組到一個函數,你不能快速提取它。例如,我假設@toop想要打電話。 'SomeFunction(Magazine [,] array)'傳遞'array = myVarName [0]'。 –