簡體   English   中英

你如何獲得多維數組的寬度和高度?

[英]How do you get the width and height of a multi-dimensional array?

我定義了一個數組:

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

這一切都很好,但我需要知道這個數組在xy維度上分別有多寬。 即, ary.Length可能返回 12 - 但這是否意味着數組是 4 高和 3 寬,還是 6 高和 2 寬?

如何檢索這些信息?

您將Array.GetLength與要檢索的維度的索引一起使用。

使用 GetLength(),而不是 Length。

int rowsOrHeight = ary.GetLength(0);
int colsOrWidth = ary.GetLength(1);
// Two-dimensional GetLength example.
int[,] two = new int[5, 10];
Console.WriteLine(two.GetLength(0)); // Writes 5
Console.WriteLine(two.GetLength(1)); // Writes 10

其他一些帖子對哪個維度是哪個維度感到困惑。 這是一個 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]);
}
ary.GetLength(0) 
ary.GetLength(1)

對於二維數組

您還可以考慮使用以下方法獲取每個指定維度中最后一個元素的索引;

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

請記住,這將索引的值設為從 0 開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM