for(int j = 0; j < Children[i].Length; j++) Console.Write( Children[i][j] + " "); Console.WriteLine(); } }//PrintAr3 Приведу некоторые комментарии к этой процедуре: - Внешний цикл по i организован по числу элементов массива Fathers. Заметьте, здесь используется свойство Length, в отличие от ранее применяемого метода GetLength.
- В этом цикле с тем же успехом можно было бы использовать и имя массива Children. Свойство Length для него возвращает число элементов верхнего уровня, совпадающее, как уже говорилось, с числом элементов массива Fathers.
- Во внутреннем цикле свойство Length вызывается для каждого элемента Children[i], который является массивом.
- Остальные детали, надеюсь, понятны.
Приведу вывод, полученный в результате работы процедуры PrintAr3.
Рис. 11.3. Дерево "Отцы и дети" В наших примерах массивы неоднократно передавались процедурам в качестве входных аргументов и возвращались в качестве результатов. В лекции 9 подробно описывались особенности передачи аргументов в процедуру. Остается подчеркнуть только некоторые детали: - В процедуру достаточно передавать только сам объект - массив. Все его характеристики (размерность, границы) можно определить, используя свойства и методы этого объекта.
- Когда массив является выходным аргументом процедуры, как аргумент C в процедуре MultMatr, выходной аргумент совсем не обязательно снабжать ключевым словом ref или out (хотя и допустимо). Передача аргумента по значению в таких ситуациях так же хороша, как и передача по ссылке. В результате вычислений меняется сам массив
|