Распознавание типов

Распознавание типов

Статический метод TheMachine.FireThisPerson() строился так, чтобы он мог принимать любой тип, производный от Employee, но возникает один вопрос: как метод "узнает", какой именно производный тип передается методу. Кроме того, если поступивший параметр имеет тип Employee, то как получить доступ к специфическим членам типов SalesPerson и Manager?

Язык C# обеспечивает три способа определения того, что ссылка базового класса действительно указывает на производный тип: явное приведение типа (рассмотренное выше), ключевое слово is и ключевое слово as. Ключевое слово is возвращает логическое значение, указывающее на совместимость ссылки базового класса с данным производным типом. Рассмотрим следующий обновленный метод FireThisPerson().

public class TheMachine {

 public static void FireThisPerson(Employee e) {

  if (e is SalesPerson) {

   Console.WriteLine("Имя уволенного продавца: {0}", e.GetFullName());

   Console.WriteLine("{0} оформил(a) {1} операций…", e.GetFullName(), ((SalesPerson)e).NumbSales);

  }

  if (e is Manager) {

   Console.WriteLine("Имя уволенного клерка: {0}", e.GetFullName());

   Console.WriteLine("{0} имел(а) (1} опцион(ов)…", e.GetFullName(), ((Manager)e).NumbOpts);

  }

 }

}

Здесь ключевое слово is используется для того, чтобы динамически определить тип работника. Чтобы получить доступ к свойствам NumbSales или NumbOpts, вы должны использовать явное приведение типов. Альтернативой место бы быть ис-пользование ключевого слова as для получения ссылки на производный тип (если типы при этом окажутся несовместимыми, ссылка получит значение null).

SalesPerson p = е as SalesРеrson;

if (p!= null) Console.WriteLinе("Число продаж: {0}", p.NumbSales);

Замечание. Из Главы 7 вы узнаете, что такой же подход (явное приведение типов, is и as) может использоваться при получении интерфейсных ссылок из реализующего типа.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

ПИСЬМОНОСЕЦ: Распознавание опечатков

Из книги Журнал «Компьютерра» № 36 от 02 октября 2007 года автора Журнал «Компьютерра»

ПИСЬМОНОСЕЦ: Распознавание опечатков Автор: Владимир ГуриевДо первого апреля еще далеко, но посмешить народ уже хочется. Так попробуем же…Думаю, редакция «Терры» прекрасно знает, как мы доверяем нашему любимому журналу. И по этому поводу у меня возникла одна мысль: а что,


Часть 1. Сканирование и распознавание

Из книги Секреты сканирования на ПК автора Леонтьев Б К

Часть 1. Сканирование и распознавание Глава 1. Как работает сканирующее устройство В процессе ввода изображения в компьютер в первую очередь необходимо преобразовать его в последовательность электрических сигналов. Для этого используются так называемые


Глава 24. Распознавание в программе FineReader

Из книги Microsoft Office автора Леонтьев Виталий Петрович

Глава 24. Распознавание в программе FineReader Распознавание в программе FineReader осуществляется в так называемом пакетном режиме. В ABBYY FineReader пакет — это папка, в которой находятся изображения и рабочие файлы программы. После того, как вы отсканируете изображение оно сохранится


Глава 32. Распознавание

Из книги Все под контролем: Кто и как следит за тобой автора Гарфинкель Симеон

Глава 32. Распознавание Задача распознавания состоит в том с тем, чтобы преобразовать отсканированное изображение в текст, сохранив при этом оформление страницы. Прежде чем приступить к распознаванию текста, необходимо установить основные параметры распознавания: язык


FineReader – распознавание текста

Из книги Справочное руководство по C++ автора Страустрап Бьярн

FineReader – распознавание текста Ввести со сканера текст в компьютер – задача не слишком трудная. Однако работать с таким текстом невозможно: как и любое сканированное изображение, страница с текстом представляет собой графический файл – обычную картинку. Отсюда возникают


Распознавание лица

Из книги 300 лучших программ на все случаи жизни автора Леонтьев Виталий Петрович

Распознавание лица В отличие от других систем биометрической идентификации, распознавание лица носит пассивный характер: оно может осуществляться без ведома человека, позволяя производить идентификацию в лифте или при проходе через дверь. Сегодня биометрические


R.14.3 Эквивалентность типов

Из книги Цифровой журнал «Компьютерра» № 36 [27.09.2010 — 03.10.2010] автора Журнал «Компьютерра»

R.14.3 Эквивалентность типов Две конструкции шаблонное-имя-класса обозначают один и тот же класс, если в них совпадают имена шаблонов типа и значения указанных параметров. Например, в следующих описаниях x и y одного типа, который отличен от типа z:template‹class E, int size› class


Сканирование и распознавание

Из книги Реферат, курсовая, диплом на компьютере автора Баловсяк Надежда Васильевна

Сканирование и распознавание Ввести со сканера текст в компьютер – задача не слишком трудная. Однако работать с таким текстом невозможно: как и любое сканированное изображение, страница с текстом представляет собой графический файл – обычную картинку. Отсюда возникают


"Яндекс" вложился в распознавание лиц Юрий Ильин

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

"Яндекс" вложился в распознавание лиц Юрий Ильин ОпубликованоЮрий Ильин Компания «Яндекс» впервые инвестировала в иностранную компанию, причём занимающуюся весьма перспективным направлением деятельности — распознаванием лиц на цифровых


Глава 8 Сканирование, распознавание и конвертирование с помощью ABBYY FineReader

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Глава 8 Сканирование, распознавание и конвертирование с помощью ABBYY FineReader В процессе написания работы вам наверняка будут встречаться тексты или рисунки из книг и журнальных статей, которые вам захочется поместить в свой документ. Если вы планируете использовать


Распознавание вида компонент

Из книги VBA для чайников автора Каммингс Стив

Распознавание вида компонент Компоненты x и y объявлены как относящиеся к типу REAL без ассоциированного алгоритма, следовательно, они являются атрибутами. Все остальные компоненты содержат конструкции видаisdo... Инструкции ...endкоторые описывают алгоритм, что является


4.2.3. Распознавание кодировки

Из книги Видеосамоучитель создания реферата, курсовой, диплома на компьютере автора Баловсяк Надежда Васильевна


Глава 9 Сканирование, распознавание и конвертирование с помощью ABBYY FineReader

Из книги автора

Глава 9 Сканирование, распознавание и конвертирование с помощью ABBYY FineReader В процессе написания работы вам наверняка будут встречаться тексты или рисунки из книг и журнальных статей, которые необходимо поместить в документ. Если вы планируете использовать лишь фрагмент,


Распознавание речи

Из книги автора

Распознавание речи Интересная системная утилита, с помощью которой можно распознавать речь и переводить ее в текст. К сожалению, поддерживается работа только с английским