Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Проверка типа с помощью ключевого слова isСодержание книги
Поиск на нашем сайте С помощью оператора i s можно определить, имеет ли рассматриваемый объект заданный тип. Общая форма его записи имеет следующий вид: выражение i s ТИП Здесь тип элемента выражение сравнивается с элементом ТИП. ЕСЛИ ТИП элемента выражение совпадает (или совместим) с элементом ТИП, результат выполнения опера-ции принимается равным значению ИСТИНА. В противном случае — значению ЛОЖЬ. Следовательно, если результат истинен, выражение можно привести к типу, заданному элементом ТИП. Рассмотрим пример использования оператора i s. // Демонстрация выполнения оператора i s. using System; class A {} class В: A {} class Usels { public 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 В) Console.WriteLine("Этот текст не будет отображен, " + "поскольку объект а не выведен из класса В.") if(b is В) Console.WriteLine("Объект b имеет тип В."); if(a is object) Console.WriteLine("а — это объект."); Результаты выполнения этой программы таковы: Объект а имеет тип А. Объект b совместим с типом А, поскольку его тип выведен из типа А. Объект b имеет тип В. а -- это объект. Несмотря на то что все сообщения в этой программе говорят сами за себя, некото- fbie из них все же требуют пояснений. Обратите внимание на следующую инструкцию: i f (b i s A) Console.WriteLine("Объект b совместим с типом А, " + "поскольку его тип выведен из типа А."); В данном случае i f-инструкция выполнилась успешно, поскольку переменная b является ссылкой типа в, который выведен из типа А. Следовательно, объект b со-вместим с типом А. Однако обратное утверждение не является справедливым. При выполнении строки кода I i f (a is В) Console.WriteLine("Этот текст не будет отображен, " + "поскольку объект а не выведен из класса В."); if-инструкция успехом не увенчается, поскольку объект а имеет тип А, который не выведен из типа в. Следовательно, объект а и класс в несовместимы по типу. Использование оператора as Иногда во время работы программы требуется выполнить операцию приведения типов, не генерируя исключение в случае, если попытка окажется неудачной. Для этого предусмотрен оператор as, формат которого таков: выражение as тип Нетрудно догадаться, что используемый здесь элемент выражение участвует в по-пытке приведения его к типу, заданному элементом тип. В случае успешного выпол-нения этой операции возвращается ссылка на тип. В противном случае возвращаетсянулевая ссылка. Оператор as в некоторых случаях предлагает удобную альтернативу оператору i s. Рассмотрим, например, следующую программу, в которой оператор i s позволяет пре-дотвратить неверное приведение типов: // Использование оператора i s для предотвращения // неверной операции приведения типов. using System; class A {} class В: А {} class CheckCast { public static void Main() { A a = new A(); В b = new В(); // Проверяем, можно ли объект а привести к типу В. if(a is В) // При положительном результате выполняем // операцию приведения типов, b = (В) а; else // В противном случае операция приведения // типов опускается, b = null; if(b==null) Console.WriteLine( "Операция приведения типов b = (В) а НЕ РАЗРЕШЕНА."); else Console.WriteLine( "Операция приведения типов b = (В) а разрешена.") Результаты выполнения этой программы таковы: Операция приведения b = (В) а НЕ РАЗРЕШЕНА. Как подтверждают эти результаты, поскольку тип объекта а не совместим с типом в, операция приведения объекта а к типу в недопустима, и ее выполнение предот-вращается с помощью инструкции if. Как видите, реализация такого подхода требует выполнения двух этапов. Первый состоит в подтверждении обоснованности операции приведения типов, а второй — в самом ее выполнении. С помощью оператора as эти два этапа можно объединить в один, как показано в следующей программе. // Демонстрация использования оператора as. using System; class A {} class В: A {} class CheckCast { public static void Main() { A a = new A(); В b = new В(); b = a as В; // Выполняем операцию приведения типов, // если она возможна. if(b==null) Console.WriteLine("Операция приведения типов " + "b = (В) а НЕ РАЗРЕШЕНА."); else Console.WriteLine( "Операция приведения типов b = (В) а разрешена."); Вот результаты выполнения этой программы: Операция приведения типов b = (В) а НЕ РАЗРЕШЕНА. В этой версии оператор as проверяет допустимость операции приведения типов, а затем, если она законна, выполняет ее, причем все это реализуется в одной инструкции.
|
||
|
Последнее изменение этой страницы: 2017-01-19; просмотров: 205; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.) |