}
Выполнение этой программы приводит к следующему результату.
0 12 3
0 12
0 12 3 4
Ступенчатые массивы находят полезное применение не во всех, а лишь в некоторых случаях. Так, если требуется очень длинный двумерный массив, который заполняется не полностью, т.е. такой массив, в котором используются не все, а лишь отдельные его элементы, то для этой цели идеально подходит ступенчатый массив.
И последнее замечание: ступенчатые массивы представляют собой массивы массивов, и поэтому они не обязательно должны состоять из одномерных массивов. Например, в приведенной ниже строке кода создается массив двумерных массивов.
int[] [,] j agged = new int [ 3] [,];
В следующей строке кода элементу массива j agged [ 0 ] присваивается ссылка на массив размерами 4><2.
jagged[0] = new int [4, 2];
А в приведенной ниже строке кода элементу массива j agged [ 0 ] [1,0] присваивается значение переменной i.
jagged[0][1,0] = i;
Присваивание ссылок на массивы
Присваивание значения одной переменной ссылки на массив другой переменной, по существу, означает, что обе переменные ссылаются на один и тот же массив,
и в этом отношении массивы ничем не отличаются от любых других объектов. Такое присваивание не приводит ни к созданию копии массива, ни к копированию содержимого одного массива в другой. В качестве примера рассмотрим следующую программу.
// Присваивание ссылок на массивы.
using System;
class AssignARef { static void Main() { int i;
int[] numsl = new int [10]; int[] nums2 = new int [10];
for(i=0; i < 10; i++) numsl[i] = i;
for(i=0; i < 10; i++) nums2[i] = -i;
Console.Write('Содержимое массива numsl: '); for(i=0; i < 10; i++)
Console.Write(numsl[i] + ' ');
Console.WriteLine() ;
Console.Write('Содержимое массива nums2: '); for(i=0; i < 10; i++)
Console.Write(nums2[i] + ' ') ;
Console.WriteLine() ;
nums2 = numsl; // теперь nums2 ссылается на numsl
Console.Write('Содержимое массива nums2 ' + 'после присваивания: '); for(i=0; i < 10; i+ +)
Console.Write(nums2[i] + ' ') ;
Console.WriteLine() ;
// Далее оперировать массивом numsl посредством // переменной ссылки на массив nums2. nums2[3] = 99;
Console.Write('Содержимое массива numsl после измененияп' + 'посредством переменной nums2: '); for (i=0; i < 10; i++)
Console.Write(numsl[i] + ' ') ;
Console.WriteLine() ;
}
}
Выполнение этой программы приводит к следующему результату.
Содержимое массива numsl: 0123456789
Содержимое массива nums2: 0 -1 -2 -3 -4 -5 -6 -7 -8 -9
Содержимое массива nums2
после присваивания: 0123456789 Содержимое массива numsl после изменения посредством переменной nums2: 012 99 456789
Как видите, после присваивания переменной nums 2