В этой главе рассматриваются три эффективных средства: динамическая идентификация типов, рефлексия и атрибуты.
Динамическая идентификация типов
Динамическая идентификация типов (RTTI) позволяет определить тип объекта во время выполнения программы. Она оказывается полезной по целому ряду причин. В частности, по ссылке на базовый класс можно довольно точно определить тип объекта, доступного по этой ссылке. Динамическая идентификация типов позволяет также проверить заранее, насколько удачным будет исход приведения типов, предотвращая исключительную ситуацию в связи с неправильным приведением типов. Кроме того, динамическая идентификация типов является главной составляющей рефлексии.
Для поддержки динамической идентификации типов в C# предусмотрены три ключевых слова: is, as и typeof. Каждое из этих ключевых слов рассматривается далее по очереди.
Проверка типа с помощью оператора is
Конкретный тип объекта можно определить с помощью оператора is. Ниже приведена его общая форма:
где
Ниже приведен пример применения оператора is.
// Продемонстрировать применение оператора is. using System;
class A {} class В : A {}
class Usels {
static void Main {
A a = new A;
В b = new В; if (a is A)
Console.WriteLine("а имеет тип A"); if(b is A)
Console.WriteLine ("b совместим с А, поскольку он производный от А"); if(a is В)