2013-09-03 4 views
1
  public const T = true; 
      public static bool[,] MassMediumHorizontal = new bool[,] 
      { 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T}, 
      {T,T,T,T,T,T} 
      }; 

는,이 배열은 6의 폭과배열이 왜 뒤집혀 있습니까? 여러분 모두가 볼 수 있듯이

내가 컴파일 (12)의 높이가, 폭과 높이가 이성을 상실한다.

디버깅 (Visual Studio 기능) 중에 중단 점을 놓고 변수 이름 위로 마우스를 가져 가면 배열의 크기가 알려지며 12x6 (너비 x 높이)라고 표시됩니다.


나는이의 반대를 얻고 싶다면 물론, 다음, 난 그냥 원래 배열 12x6을 만들 것하고 컴파일 한 후 6x12으로 끝낼.

하지만 왜 이런 일이 처음에 발생합니까? (나는 컴파일 후 왜 그렇게 회전시키지 않는가?)

+0

음, 내가 잘못 읽은 것 같습니다. 'width * height' 나'column * row'가 아닌'height * width' 또는'row * column'입니다. –

+0

혼란 스럽다고 생각하시면 아직 아무것도 보지 못했습니다. 이것은 당신의 마음을 날려 버릴 것입니다 : http://ericlippert.com/2009/08/17/arrays-of-arrays/ –

답변

5

배열을 너비와 높이로 생각하면 문제가 혼란 스럽다. 측정은 가장 바깥 쪽 치수부터 시작됩니다.

외부 치수는 12이고 내부는 6입니다. 따라서 12 x 6입니다. 작동 방식뿐입니다.

+0

아, 알겠습니다, 그것을 명확히 해 주셔서 감사합니다. 높이와 너비가 뒤집힌 것은 이상한 것처럼 보였습니다. 그에 따라 배열에 대한 모든 변경을 수행 할 것입니다. 감사합니다. – Dave

+0

@Davud : 왜 당신이 왜 뒤집혔다 고 믿는지는 분명하지 않습니다. C#에서는 2 차원 배열이 직사각형이든 비정형이든, 왼쪽 인덱스는 행을 선택하고 오른쪽 인덱스는 열을 선택합니다. 왼쪽 색인이 열이고 오른쪽 색인이 행이라는 당신의 믿음은 단순히 부정확합니다. 나는 당신의 잘못된 믿음이 어디에서 유래되었는지 알고 싶어합니다. 왜 왼쪽 인덱스가 컬럼을 선택한다는 잘못된 믿음을 가졌습니까? –

+0

@EricLippert 2D 배열의 시각적 레이아웃을 기반으로 할 것입니다. 나는 내가 여러 차례 똑같은 실수를 저지른 것을 안다. (나는 항상 그것을 기억한다.) –

1

배열에는 실제로 '너비'및 '높이'개념이 없으므로 크기는 임의입니다.

첫 번째 차원의 배열 길이가 12이고 두 번째 차원의 배열 길이가 6이므로 12x6 배열입니다. 너와 나는 전통적으로 첫 번째 차원을 '너비'로, 두 번째 차원을 '높이'로 생각한다는 사실은 컴파일러와 관련이 없다.