Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Получение интерфейсных ссылок: ключевое слово is

Получение интерфейсных ссылок: ключевое слово is

Можно также проверить реализацию интерфейса с помощью ключевого слова is. Если соответствующий объект не совместим указанным интерфейсом, будет возвращено значение false. А если тип совместим с интерфейсом, вы можете смело вызвать его члены без использования логики try/catch.

Для примера предположим, что мы изменили массив типов Shape так, что теперь некоторые его члены реализуют IPointy. Вот как с помощью ключевого слова is можно выяснить, какие из элементов в массиве поддерживают этот интерфейс.

static void Main(string[] args) {
 …
 Shape[] s = {new Hexagon(), new Circle(), new Triangle("Joe"), new Circle("JoJo")};
 for (int i = 0; i ‹ s.Length; i++) {
  // Напомним, что базовый класс Shape определяет абстрактный
  // член Draw(), поэтому все формы могут отображать себя.
  s[i].Draw()
  // Кто с вершинами?
  if (s[i] is IPointy) Console.WriteLine("-› Вершин: {0} ", ((IPointy)s[i]).Points);
  else Console.WriteLine("-› {0} без вершин!", s[i].PetName);
 }
}

Соответствующий вывод показан на рис. 7.2.


Рис 7.2. Динамическое обнаружение реализованных интерфейсов

Оглавление книги


Генерация: 1.695. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз