* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Массивы
7 февраля 2009

Массивы позволяют работать с группами однотипных значений или объектов. При
помощи массивов удается объединить набор переменных в группу и обращаться к
этим переменным по индексу в массиве. Можно перебирать эти переменные (все
или выборочно) в цикле, проверяя или изменяя их значения, или же создавать мно-
гомерные массивы. У массивов .NET Framework имеется встроенная функциональ-
ность, достаточная для решения большинства типовых задач обработки массивов.
Объявление и инициализация массивов
Массив разрешается объявить и инициализировать одним оператором, указав тип
элементов массива и их число. Нумерация элементов массивов в Visual Basic .NET
и Visual C# начинается с нуля — индекс первого элемента равен нулю, далее эле-
менты нумеруются последовательно. В Visual Basic .NET число элементов массива
задают путем указания его верхней границы. Верхняя граница массива — это индекс
его последнего элемента. В Visual C# число элементов массива задают иначе, ука-
зывая его при объявлении массива. Так, верхняя граница массива, объявленного на
Visual C#, всегда на единицу меньше числа его элементов. Следующий пример де-
монстрирует объявление и инициализацию массива целых чисел:
Visual Basic .NET
1 Объявить и инициализировать массив из 33 целых чисел,
' проиндексировав его от 0 до 32.
Dim mylntegers(32) As Integer
Visual C#
// Объявить и инициализировать массив из 33 целых чисел,
// проиндексировав его от 0 до 32.
int[] mylntegers = new int[32];
Впрочем, объявлять и инициализировать массивы можно в два этапа. В Visual
С# в одной строке разрешается объявить массив, а в другой — динамически иници-
ализировать его, как показано ниже:
Visual C#
// В этой строке объявляем массив,
int[] mylntegers;
// а в этой - записываем в него 32 элемента.
mylntegers = new int[32]:
Visual Basic .NET также позволяет динамически инициализировать массивы, но
применяемый для этого синтаксис менее гибок. Если массив объявляется без ука-
зания числа его элементов, при инициализации все элементы необходимо инициа-
лизировать. Начальные значения элементов массива заключают в фигурные скобки
и разделяют запятыми, например, так:
Visual Basic .NET
В этой строке объявляем массив,
Dim mylntegersO As Integer
а в этой - записываем в него шесть членов, попутно присваивая им значения.
mylntegers = New Integer() {0,1,2,3,4,5}
Во время выполнения можно изменить размер массива, переопределив его. В
Visual C# для этого достаточно инициализировать массив повторно:
Visual C#
// Объявить и инициализировать массив.
int[] mylntegers = new int[32];
// Инициализировать массив заново,
mylntegers = new int[45];
Для изменения числа элементов массива в Visual Basic .NET применяют опера-
тор ReDim:
Visual Basic .NET
Dim mylntegers(32) As Integer
Инициализировать массив заново.
ReDim mylntegers(45) As Integer
В предыдущих примерах повторная инициализация массива приводила к потере
всех хранимых в нем данных. В Visual Basic .NET имеется ключевое слово Preserve,
которое заставляет сохранять данные массива при его повторной инициализации;
увы, в Visual C# это невозможно.
Visual Basic .NET
Объявить массив и записать в него четыре элемента.
Dim mylntegersO As Integer = {0,1,2,3}
Инициализировать массив заново, сохранив значения
' элементов с индексами 0-3.
ReDim Preserve mylntegers(IO)
Создание массивов ссылочных типов несколько отличается. После объявления
и инициализации получается массив, заполненный не значениями, а пустыми (null)
ссылками на объекты указанного типа. Чтобы заполнить массив реальными объек-
тами, следует записать в каждый элемент массива ссылку на новый или существую-
щий объект данного типа:
Visual Basic .NET
' Создать массив объектов Widget, поместив
во все элементы пустые ссылки на объект Widget
Dim Widgets(10) as Widget
' Поместить в элемент Widgets[0] ссылку на новый объект Widget
Widgets(O) = New WidgetO
Присвоить элементу Widgets[1] ссылку на существующий объект Widget
Dim aWidget As New WidgetO
WidgetsO) = aWidget
1 Перебрать в цикле элементы массива Widgets с индексами 2-10,
' записывая в них ссылки на новые объекты Widget.
Dim Counter as Integer
For Counter = 2 to 10
Widgets(Counter) = New WidgetO
Next
Visual C#
// Создать массив объектов Widget, поместив
// во все элементы пустые ссылки на объект Widget
Widget[] Widgets = new Widget[11];
// Присвоить элементу Widgets[0] ссылку на существующий объект Widget
Widgets[0] = new WidgetO;
// Присваиваем Widgets[1] ссылку на существующий объект Widget
Widget aWidget = new WidgetO;
Widgets[1] = aWidget;
// Перебрать в цикле элементы массива Widgets с индексами 2-10,
// записывая в них ссылки на новые объекты Widget.
for (int Counter = 2; Counter < 11; Counte'-++)
{
Widgets[Counter] - new WidgetO;
Многомерные массивы
Пока мы рассмотрели только линейные массивы, то есть массивы с единственным
измерением. Кроме них .NET Framework поддерживает два типа многомерных мас-
сивов: прямоугольные ( rectangular) и невыровненные (jagged).
Прямоугольные массивы
Любое измерение прямоугольного массива образовано элементами, сформирован-
ными в свою очередь из одинакового числа элементов. Так, двумерный массив мож-
но представить как таблицу, состоящую из строк с одинаковым числом ячеек.
Прямоугольные массивы создают, указывая в объявлении дополнительные из-
мерения. Далее показаны примеры различных способов объявления многомерных
прямоугольных массивов:
Visual Basic .NET
' Объявить массив размером 5x3.
Dim intArrays(4, 2} As Integer
Объявить двумерный массив и задать начальные значения для его элементов.
Dim intArrays(,) As Integer = {{1, 2, 3}, {4, 5, 6}}
' Объявить трехмерный массив и задать начальные значения для его элементов.
Dim cubeArray(, ,) As Integer = {{{7, 2}, {1, 4}}, {{3. 5}, {4, 4}}}
' Объявить многомерный массив размером 3?3?4?5?6.
Dim cornplexArray(2, 2, 3, 4, 5) As Integer
Visual C#
// Объявить массив размером 5x3.
int[ , ] intArrays - new int[5. 3];
// Объявить двумерный массив и задать начальные значения для его элементов.
int[ , ] intArrays - {{1, 2, 3}, {4, 5, 6}}:
// Объявить трехмерный массив и задать начальные значения для его элементов.
int[ , , ] cubeArray - {{{7, 2}, {1, 4}}, {{3, 5}. {4, 4}}}:
// Объявить многомерный массив размером 3x3x4x5x6.
int[ . , , , ] complexArray = new int[3, 3, 4, 5, 6];
Невыровненные массивы
Многомерные массивы другого типа называются невыровненными. Двумерный не-
выровненный массив можно представить в виде таблицы, образованной строками с
разным числом ячеек, такой, как таблица, каждая строка которой представляет се-
мью, а число ячеек в строке равно числу членов этой семьи. Ясно, что строки в
такой таблице разной длины. Для представления этой и подобных ей таблиц при-
меняются невыровненные массивы.
На самом деле невыровненный массив — это массив массивов. Чтобы его со-
здать, необходимо объявить массив, элементами которого являются другие масси-
вы. Для этого потребуется несколько пар скобок, причем размер невыровненного
массива указывают в первой скобке. Вот как это делается:
Visual Basic .NET
Объявить массив из 3 массивов.
Dim Families(2)() As String
Инициализировать первый массив 4 элементами, присвоив им значения.
Families(O) = New StringO {"Smith", "Mom", "Dad", "Uncle Phil"}
Инициализировать второй массив 5 элементами, присвоив им значения.
Farrilies(l) = New StringO ("Jones", "Mom", "Dad", "Suzie",
"Little Bobby"}
1 Инициализировать третий массив 3 элементами, присвоив им значения,
Families(2) = New StringO {"Williams", "Earl", "Bob"}
Visual C#
// Объявить массив из 3 массивов.
string[][] Families = new string[3][];
// Инициализировать первый массив 4 элементами, присвоив им значения.
Families[0] = new string[] {"Smith", "Mom". "Dad", "Uncle Phil"};
// Инициализировать второй массив 5 элементами, присвоив им значения.
Farnilies[1] - new stringt] {"Jones", "Mom", "Dad", "Suzie",
"Little Bobby"};
// Инициализировать третий массив 3 элементами, присвоив им значения.
Families[2] = new stringt] {"Williams", "Earl", "Bob"};

Теги: .NET

Статьи по теме:

Реализация свойств
Классы CTS
Ссылки на внешние библиотеки
Применение встроенной функциональности типов данных
Добавление элементов управления на панель Toolbox
Ввод кода с помощью CodeInsight
Использование шаблонов кода
Окна Locals, Autos и Watch
Запись трассировочных данных в журнал событий
Принципы разработки пользовательского интерфейса
Лямбда-выражения
Защищенные члены
Развертывание проекта
Установка порядка передачи фокуса при нажатии клавиши Tab
Объект Graphics
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Массивы. Регион сайта: Москва и Санкт-Петербург