您如何获得多维数组的宽度和高度?


178

我定义了一个数组:

int [,] ary;
// ...
int nArea = ary.Length; // x*y or total area

一切都很好,但是我需要知道数组分别在xy维度中的宽度。即,ary.Length可能返回12-但这是否意味着数组是4高3宽,或6高2宽?

如何获取此信息?



Answers:



114

使用GetLength(),而不是Length。

int rowsOrHeight = ary.GetLength(0);
int colsOrWidth = ary.GetLength(1);


24

其他一些帖子对哪个维度是哪个感到困惑。这是一个NUNIT测试,显示2D数组如何在C#中工作

[Test]
public void ArraysAreRowMajor()
{
    var myArray = new int[2,3]
        {
            {1, 2, 3},
            {4, 5, 6}
        };

    int rows = myArray.GetLength(0);
    int columns = myArray.GetLength(1);
    Assert.AreEqual(2,rows);
    Assert.AreEqual(3,columns);
    Assert.AreEqual(1,myArray[0,0]);
    Assert.AreEqual(2,myArray[0,1]);
    Assert.AreEqual(3,myArray[0,2]);
    Assert.AreEqual(4,myArray[1,0]);
    Assert.AreEqual(5,myArray[1,1]);
    Assert.AreEqual(6,myArray[1,2]);
}


3

您还可以考虑使用以下方法获取每个指定维度中的最后一个元素的索引;

int x = ary.GetUpperBound(0);
int y = ary.GetUpperBound(1);

请记住,这会使index的值从0开始。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.