假设我创建一个锯齿状的2d数组,如下所示:
public static char[,] phoneLetterMapping = { {'0'}, {'1'}, {'A', 'B', 'C'} };
现在,给定数组的第一个索引,我想确定内部数组的长度。
我希望能够做到这样的事情:
phoneLetterMapping[2].length
我可以用Java做到这一点。但是当我输入[] [] 2d数组的第一个括号时,Intellisense菜单不会返回数组的普通成员。
如何在C#中获取我的2d数组的内部数组长度?
答案 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