2011-06-12 104 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[]元素。