在Java中,我們可以做這方面的工作:在C#多維數組類似於Java
bool[][] something = new bool[5][10];
// Then, we can do this, since indexes do not refer to null instances:
something [3][7] = true;
然而,同樣的似乎並不在C#編譯。有沒有在C#中這樣做的等效方式?
在Java中,我們可以做這方面的工作:在C#多維數組類似於Java
bool[][] something = new bool[5][10];
// Then, we can do this, since indexes do not refer to null instances:
something [3][7] = true;
然而,同樣的似乎並不在C#編譯。有沒有在C#中這樣做的等效方式?
的語法稍有不同:
bool[,] something = new bool[5,10];
// Then, we can do this, since indexes do not refer to null instances:
something [3,7] = true;
或者,如果你使用的是C#3.0+,你可以稍微簡化申報:
//Doesn't work for fields.
var something = new bool[5,10];
這是一個多維數組。你可以參考MSDN瞭解更多信息。
C#s,語法是如此稍有不同。一個非常快速的谷歌投擲this MSDN page。
你問題中的語法會給你在C#中的鋸齒陣列(數組數組)。這些不同於多維數組(單元數組中的元素與內存連續存儲,具有多維索引)。
我還沒有在Java中做過很多工作,但有一點研究表明Java多維數組類似於C#鋸齒陣列,而不是C#多維數組。
要聲明並創建數組的數組,你可以這樣做:
bool[][] something = new bool[5][];
這將創建一個五元素的數組的元素是bool[]
類型。您需要分別創建元素(或者從別處獲取對它們的引用)。五個陣列不必具有相同的長度:
for (int i = 0; i < something.Length; i++)
something[i] = new bool[GetLengthForElement(i)];
如果你想他們都爲10元長,你當然可以這樣做,而不是:
for (int i = 0; i < something.Length; i++)
something[i] = new bool[10];
可能對眼睛更容易與一個'var' :) –
@RussCam - 好點,但我試圖保持它儘可能接近原始代碼。 (這也可能是我知道的所有領域)。 – vcsjones
我明白。我想知道OP是否知道關鍵字? –