Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на 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

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

Языки программирования .NET
Оптимизация средствами компилятора
Применение классов Debug и Trace
Вызов методов
Установка сборок в GAC
Защита приложения
Карринг (currying)
Преобразование типов
Реализация метода RemoveStale
Создание экземпляров элементов управления ActiveX
Модификаторы доступа для вложенных типов
Создание поддержки печати
Строительные блоки .NET
Перегрузка членов
Создание составных элементов управления
| .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 | Массивы. Регион сайта: Москва и Санкт-Петербург