2011-06-12 145 views
-1

您如何看待它們之間的區別?鋸齒陣列與陣列陣列

new object[][] { new object[] { "1" }, new object[] { "2" }, new object[] { "3" } } 

new object[] { new object[] { "1" }, new object[] { "2" }, new object[] { "3" } } 

他們唯一的區別是我看到的是重載的方法params。

static void Arr(object[][] oa) 

static void Arr(object[] oa) 

記憶效率可能嗎?

+3

Jagged Array是一個數組數組 – 2011-06-12 21:15:14

+0

你問你哪一個是錯的? – 2011-06-12 21:36:18

回答

5

第一個是類型安全的;第二個不是。

兩個數組都是完全一樣的,除了第二個數組鍵入爲object s,而第一個數組必須包含object[](數組)。因此,你可以寫

new object[] { DateTime.Now, new object[] { "1" }, new object[] { "2" }, ... } 

雖然你不能寫

new object[][] { DateTime.Now, new object[] { "1" }, new object[] { "2" }, ... } 

...因爲DateTime.Now不是一個object[]

實際上,您應該嘗試使用可能最嚴格的類型來防止您犯錯。
在你的情況下,你應該使用string[][]來確保你不能把DateTime.Now放在一個內部數組中。

+0

我認爲你的意思是,第一個是靜態類型,而第二個不是。兩者都是類型安全的。 – leppie 2011-06-12 21:15:29

2

區別在於,在第二個示例中,您可以在數組中使用object類型的元素,而在第一個示例中,您可以使用object[]元素。