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


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



Наборы
7 февраля 2009

Наборы предоставляют дополнительные возможности по управлению группами
объектов. Набор (collection) — это специальный класс, объединяющий несколько
объектов в группу и открывающий к ней доступ. Как и в массиве, доступ к члену
набора осуществляется через его индекс, но в отличие от массива размеры набора
разрешается динамически изменять, добавляя и удаляя его члены во время выпол-
нения.
Примечание В этом разделе рассматриваются только типы наборов из пространства
имен System. Collections. Технически возможно создать класс набора и без этих ти-
пов, применяя некоторые интерфейсы, которые обычно реализуют в типах набо-
ров. Подробнее об интерфейсах и их реализации рассказано в главе 4.
Как правило, наборы применяют для управления группами элементов, динами-
чески формируемых во время выполнения. Например, можно создать приложение
для анализа группы объектов Customer, представляющих сведения о покупателях.
Создание набора объектов Customer позволит анализировать отдельные объекты,
перебирать их в цикле, а также добавлять новые и удалять устаревшие объекты по
мере необходимости.
Класс ArrayList
Класс System. Collections.ArrayList предоставляет базовую функциональность цля ра-
боты с наборами, достаточную для решения многих задач. Этот класс позволяет
динамически добавлять и удалять элементы из простого списка. Для извлечения
элемента необходимо указать его индекс в списке. Новые экземпляры класса Array-
List создают так:
Visual Basic .NET
Dim myList As New System.Collections.ArrayList()
Visual C#
System.Collections.ArrayList myList = new System.Collections.ArrayList();
Метод Add
К созданному экземпляру класса ArrayList можно добавлять новые элементы при
помоши метода Add:
Visual Basic .NET
Dim myWidget As New Widget()
myList.Add(myWidget)
Visual C#
Widget myWidget = new WidgetO;
myList.Add(myWidget);
Нумерация объектов-элементов набора ArrayList начинается с нуля, то есть пер-
вый элемент списка получает индекс «О», второй — «1» и т.д.
Свойство-индексатор Item
Свойство Item набора позволяет извлечь из него элемент с заданным индексом. В
Visual Basic .NET свойство Item считается свойством набора по умолчанию. Таким
образом, при обращении к элементам набора можно опускать имя свойства Item,
как при обращении к элементу массива. В Visual C# свойства наборов по умолча-
нию называются индексаторами (indexer), поэтому вместо явного указания имени
свойства Item в программах на С# необходимо применять ссылки на элементы мас-
сива. Подробнее свойства по умолчанию и индексаторы обсуждаются на следую-
щем занятии. Следующий пример демонстрирует оба способа получения элемента
набора посредством свойства Item.
Visual Basic .NET
Dim myObject As Object
myObject = rnyList(O)
Следующая строка эквивалентна предыдущей.
myObject = myList.Item(O)
Visual C#
object myObject;
myObject = myListfO];
Все ссылочные типы, хранимые в наборах, имеют тип Object. Поэтому свойство
Item всегда возвращает ссылку на Object, независимо от реального типа объекта,
который находится в этом элементе. Если же нужно получить исходный тип, кото-
рый был записан в набор, необходимо явно привести объект, возвращаемый свой-
ством Item, к требуемому типу:
Visual Basic .NET
Dim myWidget As Widget
' Этот пример предполагает наличие набора объектов Widget.
myWidget = CType(widgetCollection(0), Widget)
Visual C#
Widget myWidget;
myWidget = (Widget)widgetCollection[0];
Методы Remove и RemoveAt
Эти методы предназначены для удаления элементов из набора. Метод Remove при-
нимает в качестве параметра ссылку на объект, удаляемый из набора:
Visual Basic .NET
Dim myWidget As New Widget()
Dim myList As New System.Collections.ArrayListf)
' Добавить в набора объект Widget.
myList.Add(myWidget)
' Удалить объект Widget из набора.
myList.Remove(myWidget)
Visual C#
Widget myWidget = new Widget();
System.Collections.ArrayList myList = new
System. Collections. ArrayListO;
// Добавить объект Widget в набор.
myList.Add(myWidget);
// Удалить объект Widget из набора.
myList.Remove(myWidget);
Попытка удалить из набора объект, отсутствующий в нем, не вызывает ошибку
и просто игнорируется.
Метод RemoveAt позволяет удалить из набора элемент с заданным индексом, на-
пример, так:
Visual Basic .NET
Dim myList As New System.Collections,ArrayListO
' Добавить в набор три объекта Widget.
Dim X As Integer
For X = 1 to 3
Dim aWidget As New Widget()
myList.Add(aWidget)
Next
1 Удалить объект Widget с индексом 1.
myList.RernoveAt(l)
Visual C#
System.Collections.ArrayList myList = new
System.Collections.ArrayList();
// Добавить в набор три объекта Widget,
for (int x - 0; x < 3; x++)
:
Widget myWidget - new Widgetf);
myList.Add(myWidciet);
: // Удалить объект Widget с
индексом 1.
myList.RemoveAt(1);
Заметьте: после удаления оставшиеся элементы набора нумеруются заново, что
позволяет восстановить их последовательную нумерацию. В силу этих обстоятельств
индекс элементов может изменяться.
Свойство Count
Свойство Count возвращает текущее число элементов набора. Поскольку нумера-
ция элементов начинается с нуля, значение Count всегда на единицу больше верх-
ней границы массива.
Другие типы наборов из класса Collections
В пространстве имен System. Collections есть и другие классы наборов, позволяющие
упорядочивать объекты, объединяя их в группы. Эти классы предоставляют допол-
нительные возможности и позволяют решать специфические задачи, недоступные
классу ArrayList. Отдельные классы кратко описаны в таблице 3-6.
Таблица 3-6. Члены класса System. Collections
Имя Описание
BitArray Представляет уплотненный массив однобитных элементов
(принимающих значение 1 или 0)
CollectionBase Основа для создания пользовательских классов наборов, предоставляет
большинство функций, необходимых для обслуживания наборов
Hashtable Набор пар «ключ — значение», упорядоченных по значению хеш-кода
ключа
Queue Набор объектов, организованный по принципу «первым вошел —
первым вышел»
Sortedlist Группа объектов, доступных через значение индекса или ключа
Stack Набор объектов, организованный по принципу «первым вошел —
последним вышел»

Теги: .NET

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

Cosmos – C# Open Source Managed Operating System
Установка сборок в виде компилированных образов
Использование отладочных инструментов
Изменение меню во время выполнения
Работа с классом Help
Установка точек прерывания
Классы CTS
Преобразование кодировки символов
Модификаторы доступа для вложенных типов
Формирование запросов SQL во время выполнения
Защищенные члены
Обработка событий клавиатуры на уровне формы
Преобразование типов
Редактор файловой системы
Переменные методов
| .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


     



Rambler's Top100

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

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