2017-03-01 87 views
-8

我想聲明這個類型的變量:C# - 浮法[] []聲明

float[][] 

事情沒有爲我工作(不編譯) -

float[][] inputs = new float[10][5]; 
float[][] inputs = new float[10,5]; 

當試圖宣佈這樣的陣列 -

int a = 3; 
int b = 2; 
float[][] inputs = new float[][] 
{ 
    new float[a], 
    new float[b] 
}; 

我得到一個多維數組有兩個浮標陣,而不是說有3個陣列和永遠的數組ÿ數組大小是2

+4

沒有工作是不是我們可以做任何事情 – Icepickle

+4

什麼沒有工作? –

+0

這在很多C#初學者中都有解釋。例如:https://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx和https://msdn.microsoft.com/en-us/library/2s05feca.aspx – JHBonarius

回答

3

那麼,有不同的類型:

  • 陣列陣列(鋸齒狀陣列):

    float[][] sample = new float[][] { 
        new float[] {1, 2, 3}, 
        new float[] {4, 5}, // notice that lines are not necessary of the same length 
    }; 
    
  • 二維數組:

    float[,] sample2 = new float[,] { 
        {1, 2, 3}, 
        {4, 5, 6}, 
    }; 
    

編輯:你的代碼修改爲:

// jagged array (10 arrays each of which has 5 items) 
    float[][] inputs = new float[10][] { 
    new float[5], 
    new float[5], 
    new float[5], 
    new float[5], 
    new float[5], 
    new float[5], 
    new float[5], 
    new float[5], 
    new float[5], 
    new float[5], 
    }; 

可以縮短與的LINQ的幫助聲明:

float[][] inputs = Enumerable 
    .Range(0, 10)    // 10 items 
    .Select(i => new float[5]) // each of which is 5 items array of float 
    .ToArray();     // materialized as array 

或者在二維數組的情況下

// 2d array 10x5 
    float[,] inputs = new float[10,5]; 
+0

相關[有什麼區別多維數組和C#中的數組數組?](http://stackoverflow.com/q/597720/579895) – Pikoh

+0

是你的(修改)初始化代碼,然後使用循環更有效嗎?例如。 'for(var idx = 0; idx JHBonarius

+0

@ J.H.Bonarius:如果* building *數組被允許,那麼你可以想出一個*循環*解決方案(如你所做的那樣),然而,當需要*聲明*時,例如, '私人浮動[] []輸入=?'你不能使用循環。 –