Читаем C# 4.0: полное руководство полностью

    Console.WriteLine() ;


    // Вывести значения из третьего массива.

    for(i=0; i < 5; i++)

      Console.Write(jagged[2] [i] + " ") ;


    Console.WriteLine() ;

  }

}


Выполнение этой программы приводит к следующему результату.


0 1 2 3

0 1 2

0 1 2 3 4


Ступенчатые массивы находят полезное применение не во всех, а лишь в некоторых случаях. Так, если требуется очень длинный двумерный массив, который заполняется не полностью, т.е. такой массив, в котором используются не все, а лишь отдельные его элементы, то для этой цели идеально подходит ступенчатый массив.

И последнее замечание: ступенчатые массивы представляют собой массивы массивов, и поэтому они не обязательно должны состоять из одномерных массивов. Например, в приведенной ниже строке кода создается массив двумерных массивов.


int[] [,] jagged = new int [ 3] [,];


В следующей строке кода элементу массива jagged[0] присваивается ссылка на массив размерами 4x2.


jagged[0] = new int [4, 2];


А в приведенной ниже строке кода элементу массива jagged[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\n" + "после присваивания: ");

    for(i=0; i < 10; i++)

      Console.Write(nums2[i] + " ") ;


    Console.WriteLine() ;


    // Далее оперировать массивом numsl посредством

    // переменной ссылки на массив nums2. nums2[3] = 99;

    Console.Write("Содержимое массива numsl после изменения\n" +

         "посредством переменной nums2: "); for (i=0; i < 10; i++)

    Console.Write(numsl[i] + " ") ;


    Console.WriteLine() ;

  }

}


Выполнение этой    программы приводит к следующему    результату.


Содержимое массива    numsl:    0 1 2 3 4 5 6 7 8 9

Содержимое массива    nums2:    0 -1 -2 -3 -4 -5 -6 -7 -8 -9

Содержимое массива    nums2

после присваивания: 0 1 2 3 4 5 6 7 8 9  

Содержимое массива numsl после изменения

посредством переменной nums2: 0 1 2 99 4 5 6 7 8 9


Как видите, после присваивания переменной nums 2 значения переменной numsl обе переменные ссылки на массив ссылаются на один и тот же объект.


Применение свойства Length

Реализация в C# массивов в виде объектов дает целый ряд преимуществ. Одно из них заключается в том, что с каждым массивом связано свойство Length, содержащее число элементов, из которых может состоять массив. Следовательно, у каждого массива имеется специальное свойство, позволяющее определить его длину. Ниже приведен пример программы, в которой демонстрируется это свойство.


// Использовать свойство Length массива.

using System;

class LengthDemo {

  static void Main() {

    int[] nums = new int[10];


Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных