В данном варианте программы в одном и том же операторе as сначала проверяется обоснованность операции приведения типов, а затем выполняется сама операция приведения типов, если она допустима.

Применение оператора typeof

Несмотря на всю свою полезность, операторыasиisпроверяют лишь совместимость двух типов. Но зачастую требуется информация о самом типе. Для этой цели в C# предусмотрен операторtypeof.Он извлекает объект классаSystem. Туредля заданного типа. С помощью этого объекта можно определить характеристики конкретного типа данных. Ниже приведена общая форма оператораtypeof:

typeof(тип)

где тип обозначает получаемый тип. Информация, описывающая тип, инкапсулируется в возвращаемом объекте классаТуре.

Получив объект классаТуредля заданного типа, можно извлечь информацию о нем, используя различные свойства, поля и методы, определенные в классеТуре.КлассТуредовольно обширен и содержит немало членов, поэтому его рассмотрение придется отложить до следующего раздела, посвященного рефлексии. Но в качестве краткого введения в этот класс ниже приведена программа, в которой используются три его свойства:FullName, IsClassиIsAbstract.Для получения полного имени типа служит свойствоFullName.СвойствоIsClassвозвращает логическое значениеtrue,если тип относится к классу. А свойствоIsAbstractвозвращает логическое значениеtrue,если класс является абстрактным.

// Продемонстрировать применение оператора typeof.

using System; using System.10;

class UseTypeof {

static void Main() {

Type t = typeof(StreamReader);

Console.WriteLine(t.FullName);

if (t.IsClass) Console.WriteLine("Относится к классу."); if (t.IsAbstract) Console.WriteLine("Является абстрактным классом."); else Console.WriteLine("Является конкретным классом.");

}

}

Эта программа дает следующий результат.

System.10.StreamReader Относится к классу.

Является конкретным классом.

В данной программе сначала извлекается объект классаТуре,описывающий типStreamReader.Затем выводится полное имя этого типа данных и определяется его принадлежность к классу, а далее — к абстрактному или конкретному классу.

Рефлексия

Перейти на страницу:

Похожие книги