如何在C#中的二维数组中获取内部数组的长度?

时间:2010-03-16 19:39:26

标签: c# arrays

假设我创建一个锯齿状的2d数组,如下所示:

public static char[,] phoneLetterMapping = { {'0'}, {'1'}, {'A', 'B', 'C'} };

现在,给定数组的第一个索引,我想确定内部数组的长度。

我希望能够做到这样的事情:

phoneLetterMapping[2].length

我可以用Java做到这一点。但是当我输入[] [] 2d数组的第一个括号时,Intellisense菜单不会返回数组的普通成员。

如何在C#中获取我的2d数组的内部数组长度?

3 个答案:

答案 0 :(得分:4)

您发布的声明甚至不会在C#中编译,这是您的主要问题。

您已使用char[,]声明了一个2D非锯齿状数组,但您尝试使用{ {'0'}, {'1'}, {'A', 'B', 'C'} }在“=”的右侧实例化锯齿状数组。

现在,如果您以不同方式声明它:

public static char[][] phoneLetterMapping = { new[] { '0' }, new[] { '1' }, new[] { 'A', 'B', 'C' } };

然后你可以简单地称之为:

phoneLetterMapping[0].Length;

但是,您最初发布的代码行不会在C#中编译。

答案 1 :(得分:1)

你正在寻找GetLength

 phoneLetterMapping.GetLength(dimension)

答案 2 :(得分:1)

在C#中有两种类型的2d数组:

真正的2d数组和锯齿状(数组数组)

在你的情况下你使用了2d数组的语法,如果你想获得它的长度,你需要调用GetLength并指定维度。在你的情况下它是1(0是第一个)你的代码真的不会编译,因为你的数组不是矩形 - 它是2d数组必须的。

如果你想要一个jabbed数组,请看:http://msdn.microsoft.com/en-us/library/2s05feca.aspx