Просто для наглядного примера и предоставления ответа моими собственными словами ... (Сначала я не смог понять, почему также было выдано исключение):
double[,] x = new double[3, 3];
дает массив, которыйвыглядит следующим образом:
[0,0] [1,0] [2,0]
[0,1] [1,1] [2,1]
[0,2] [1,2] [2,2]
Я думал, что код пытается найти длину того, что можно рассматривать как подмассив, где каждая строка представляет массив, который в свою очередь является членом большего массива.
На самом деле строки сами по себе не являются массивами, а просто элементами (двойниками) исходного массива.Метод GetLength
ищет размеры массива, а не длину (что может сбивать с толку, поскольку Length
используется для определения количества элементов в массиве).Этот массив имеет два измерения, размер X
и размер Y
, если хотите.
Думайте о нем, как о плоском листе, который имеет два измерения.Если добавить третье:
double[,,] x = new double[3, 3, 3];
Лист становится кубом, добавляется новое измерение Z
, и будет работать третье GetLength
.