【问题标题】:How do I get the inner array's length in a 2d array in C#?如何在 C# 的二维数组中获取内部数组的长度?
【发布时间】:2012-12-31 23:10:19
【问题描述】:

假设我创建了一个像这样的锯齿状二维数组:

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

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

我希望能够做类似的事情:

phoneLetterMapping[2].length

我可以在 Java 中做到这一点。但是当我在 [][] 2d 数组的第一个括号中键入时,智能感知菜单不会返回数组的正常成员。

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

【问题讨论】:

  • 请注意,char[,] 不像其他语言那样是锯齿状数组。这是一个真正的“多维”数组。锯齿状字符数组将是 'char[][]'。

标签: c# arrays


【解决方案1】:

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

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

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

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

然后你可以简单地调用类似的东西:

phoneLetterMapping[0].Length;

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

【讨论】:

    【解决方案2】:

    您正在寻找 GetLength

     phoneLetterMapping.GetLength(dimension)
    

    【讨论】:

    • 锯齿状数组甚至不能以 OP 想要声明的方式声明,所以这行不通。
    【解决方案3】:

    在 C# 中有两种类型的二维数组:

    真正的二维数组和锯齿状(数组的数组)

    在您的情况下,您使用了二维数组的语法,如果您想获得它的长度,您需要调用 GetLength 并指定维度。在您的情况下,它是 1(首先是 0)实际上您的代码将无法编译,因为您的数组不是矩形的 - 这是二维数组的必需品。

    如果你想要一个刺戳阵列,请参阅:http://msdn.microsoft.com/en-us/library/2s05feca.aspx

    【讨论】:

      猜你喜欢
      • 2011-11-14
      • 2011-04-29
      • 2021-04-17
      • 1970-01-01
      • 2012-07-30
      • 2011-04-11
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多