锯齿状阵列与阵列数组

时间:2011-06-12 21:11:30

标签: c# jagged-arrays

你觉得他们之间有什么区别?

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

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

他们唯一的区别是我看到的是方法的重载方法。

static void Arr(object[][] oa)

static void Arr(object[] oa)

也许记忆的效率?

2 个答案:

答案 0 :(得分:5)

第一个是类型安全的;第二个不是。

两个数组完全相同,只是第二个数组的类型为object s,而第一个数组必须包含object[] s(数组)。因此,你可以写

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放入内部数组中。

答案 1 :(得分:2)

不同之处在于,在第二个示例中,您可以在数组中包含object类型的元素,而在第一个示例中,您可以拥有object[]个元素。