다차원 배열의 너비와 높이를 어떻게 얻습니까?


180

배열이 정의되어 있습니다.

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

이것은 모두 좋고 훌륭하지만이 배열의 너비 xy크기가 개별적으로 얼마나 넓은 지 알아야합니다 . 즉, ary.Length12를 반환 할 수 있지만 배열이 4 높이와 3 너비 또는 6 높이와 2 너비라는 것을 의미합니까?

이 정보를 어떻게 검색 할 수 있습니까?



답변:



114

길이 대신 GetLength ()를 사용하십시오.

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

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

24

다른 게시물 중 일부는 어떤 차원이 어떤 것인지 혼동합니다. 다음은 C #에서 2D 배열이 작동하는 방식을 보여주는 NUNIT 테스트입니다.

[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);

인덱스의 값은 0을 기준으로합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.