Учебник Visual Basic .NET Выражения, операторы Классы и объекты Наследование и интерфейсы Обработка событий и делегаты Обработка ошибок Формы Windows Ввод-вывод Многопоточные приложения Поддержка баз данных Обзор ASP .NET

Имена функций вводят нас в заблуждение, так как на самом деле эти функции ничего не задают и не определяют. Работая в паре, они дают способ задания двух вещественных коэффициентов растяжения (сжатия) путем задания четырех целых чисел. Параметры функций должны быть целыми или объектами класса csize, которые тоже создаются из двух целых. Значительно проще было бы задать два вещественных числа и использовать их в качестве коэффициентов. Объяснение наблюдаемой реальности, видимо, кроется в истории разработки функций API (сложности с floating point-арифметикой).

ICollection

Интерфейс ICollection определяется производным от IEnumerable; он дополняет этот интерфейс тремя свойствами, доступными только для чтения, и одним новым методом. Класс ICollection редко реализуется самостоятельно. Как правило, он образует базу для интерфейсов IList и IDictionary (см. ниже). Члены этого интерфейса перечислены в табл. 5.2.

Таблица 5.2. Члены интерфейса ICollection

Метод/свойство

Описание

Count (свойство) Возвращает количество элементов в коллекции
IsSynchronized (свойство)Используется в многопоточных приложениях (см. главу 12). Свойство возвращает True, если доступ к коллекции синхронизируется с учетом многопоточного доступа
SyncRoot (свойство) Также используется в многопоточных приложениях (см. главу 12). Свойство возвращает объект для синхронизации доступа к коллекции
СоруТо (метод)Копирует элементы из коллекции в массив, начиная с заданной позиции

 

Интерфейс ICollection реализуется классом System.Collections.CollectionBase.

 

IList

Интерфейс IList обеспечивает выборку элементов коллекции по индексу. Разумеется, поскольку этот интерфейс определяется производным от I Enumerable, при этом сохраняется возможность использования For-Each. Иерархия наследования IList выглядит следующим образом:

IEnumerable->ICollection->IList

Интерфейс IList относительно сложен — он состоит из трех свойств и семи методов (табл. 5.3). Напомним, что некоторые из методов могут быть пустыми, если в каком-то конкретном классе их реализация не имеет смысла.

Таблица 5.3. Члены интерфейса IList

Метод/свойство

Описание

IsFixedSize (свойство) Логическое свойство. Показывает, имеет ли коллекция фиксированный размер
IsReadOnly (свойство)Логическое свойство. Показывает, доступна ли коллекция только для чтения
Item (свойство)Свойство доступно для чтения и записи. Используется для получения и присваивания значения объекта с заданным индексом
Add (ByVal value As Object) As Integer (метод)

Включает объект в текущую позицию списка. Метод должен возвращать индекс, присвоенный добавленному элементу

Clear (метод)

Удаляет все элементы из списка

Contains (ByVal value As Object) As Boolean (метод)

Метод предназначен для проверки наличия в списке заданного значения. Эффективная реализация этого метода иногда бывает весьма нетривиальной задачей. Если элемент присутствует в списке, метод возвращает True; в противном случае возвращается False

IndexOf (ByVal value As Object) As Integer (метод)

Возвращает индекс заданного объекта в списке (программист также должен учитывать эффективность реализации этого метода)

Insert(ByVal index As Integer, ByVal value As Object) (метод)

Вставляет объект в заданную позицию списка

Remove(ByVal value As Object) (метод)

Удаляет первое вхождение заданного объекта в списке

Remove(ByVal index As Integer) (метод)

Удаляет элемент, находящийся в заданной позиции

 

Интерфейс IList реализуется классом System.Collections.CollectionBase.

 

Если мы зададимся целью масштабировать изображение, то есть дать пилы-юним-;-лю возможность изменять его размеры, то нам следует научиться управлять режимами и параметрами отображения логической системы координат в физическую. Вы уже знаете, что Win32 API использует четыре координатных пространства (spaces): World space, Page space, Device space, и Physical Device space. Однако большая часть документации и книг но MFC оперируют только двумя терминами: логическая и физическая системы координат. Мы будем использовать термин, логическая система координат, имея в виду Page space.