Надо не ожидать чего-то, а читать документацию, чтобы не вести себя, как капризная ученица из пансиона благородных девиц. Не нравится - не пользуйтесь, что за проблема?
Раздел “Помощь новичкам” предполагает, что человек приходит и просит помощи в решении возникшей проблемы. А вовсе не для рассказов, как “тут все плохо и неразумно”.
var b: array [,] of byte := ((1, 2, 9), (3, 4), (5, 6));
b.Println;
var b: array [,] of byte := ((1, 2), (3, 4, 9), (5, 6));
b.Println;
Тут происходит ошибка времени выполнения, а должно быть одинаковое количество размерностей с проверкой на этапе компиляции. То есть, тут должна быть ошибка компиляции.
Первый вариант - просто использование умолчаний.
Число групп равно 3, в первой группе элементов 3, поэтому массив 3х3. Где не хватает, инициализация не выполняется, остается значение, занесенное .NET, для типа byte это дефолтный ноль. Если когда-нибудь доделают операцию ?, позволяющую дефолт менять, можно будет заносить не нули)))
То есть такое умолчание годится только когда первая строка самая длинная. Немного странно… Я так понял Admin’a, что используется синтаксис описания двумерного массива и синтаксис описания массива массивов (в инициализации). И это нехорошо и должно ловиться на этапе компиляции.