Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Массивы интерфейсных типов
Массивы интерфейсных типов
Следует понимать, что один и тот же интерфейс может реализовываться многими типами, даже если эти типы не находятся в рамках одной иерархии классов. В результате можно получать очень мощные программные конструкции, Предположим, например, что мы построили одну иерархию классов для описания кухонной посуды, а другую – для описания садового инвентаря.
Эти иерархии абсолютно не связаны между собой с точки зрения классического наследования, но с ними можно обращаться полиморфно, используя программирование на основе интерфейсов. Для иллюстрации предположим, что у нас есть массив объектов, совместимых с IPointy. При условии, что все объекты этого массива поддерживают один интерфейс, вы можете обходиться с каждым объектом, как с IPointy-совместимым объектом, несмотря на абсолютную несовместимость иерархий классов.
static void Main(string[] args) {
// Этот массив может содержать только типы,
// реализующие интерфейс IPointy.
IPointy[] myPointyObjects = {new Hexagon(), new Knife(), new Triangle(), new Fork(), new PitchFork()};
for (int i = 0; i ‹ myPointyObjects.Length; i++) Console.WriteLine("Объект имеет {0} вершин", myPointyObjects[i].Points);
}
Замечание. С учетом общеязыковой природы .NET важно подчеркнуть, что можно определить интерфейс на одном языке (C#), а реализовать его на другом (VB .NET). Но чтобы выяснить, как это сделать, нам потребуется понимание структуры компоновочных блоков .NET, что является темой обсуждения главы 11.
- Определение интерфейсов в C#
- Реализация интерфейсов в C#
- Интерфейсы в сравнении с абстрактными базовыми классами
- Вызов членов интерфейса на уровне объекта
- Интерфейсы в качестве параметров
- Интерфейсы в качестве возвращаемых значений
- Массивы интерфейсных типов
- Явная реализация интерфейса
- Построение иерархии интерфейсов
- Реализация интерфейсов в Visual Studio 2005
- Создание перечислимых типов (Enumerable и IEnumerator)
- Создание клонируемых объектов (ICloneable)
- Создание сравнимых объектов (IComparable)
- Интерфейсы из пространства имен System.Collections
- Классы из пространства имен System.Collections
- Пространство имен System.Collections.Specialized
- Резюме
- Стандарт типов данных
- Динамические массивы
- Использование типов содержимого и столбцов
- 5.3 Классификация типов резервного копирования
- 9.1 Массивы RAID
- 2.7 Преобразования типов
- Описание типов модулей оперативной памяти
- Объекты без прототипов
- 7. Лекция: Преобразование типов
- Массивы
- 6.3 Массивы структур
- Основы применения обнуляемых типов