Вход/Регистрация
C# 4.0 полное руководство - 2011
вернуться

Шилдт Герберт

Шрифт:

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\n" + "после присваивания: "); 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 значения переменной numsl обе переменные ссылки на массив ссылаются на один и тот же объект.

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

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

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

using System;

class LengthDemo { static void Main {

int[] nums = new int[10];

Console.WriteLine("Длина массива nums равна " + nums.Length);

// Использовать свойство Length для инициализации массива nums. for(int i=0; i < nums.Length; i++) nums[i] = i * i;

// А теперь воспользоваться свойством Length // для вывода содержимого массива nums.

  • Читать дальше
  • 1
  • ...
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: