Распознавание типов
Распознавание типов
Статический метод 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) может использоваться при получении интерфейсных ссылок из реализующего типа.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Распознавание речи
Распознавание речи Интересная системная утилита, с помощью которой можно распознавать речь и переводить ее в текст. К сожалению, поддерживается работа только с английским
Глава 9 Сканирование, распознавание и конвертирование с помощью ABBYY FineReader
Глава 9 Сканирование, распознавание и конвертирование с помощью ABBYY FineReader В процессе написания работы вам наверняка будут встречаться тексты или рисунки из книг и журнальных статей, которые необходимо поместить в документ. Если вы планируете использовать лишь фрагмент,
R.14.3 Эквивалентность типов
R.14.3 Эквивалентность типов Две конструкции шаблонное-имя-класса обозначают один и тот же класс, если в них совпадают имена шаблонов типа и значения указанных параметров. Например, в следующих описаниях x и y одного типа, который отличен от типа z:template‹class E, int size› class
Часть 1. Сканирование и распознавание
Часть 1. Сканирование и распознавание Глава 1. Как работает сканирующее устройство В процессе ввода изображения в компьютер в первую очередь необходимо преобразовать его в последовательность электрических сигналов. Для этого используются так называемые
Глава 24. Распознавание в программе FineReader
Глава 24. Распознавание в программе FineReader Распознавание в программе FineReader осуществляется в так называемом пакетном режиме. В ABBYY FineReader пакет — это папка, в которой находятся изображения и рабочие файлы программы. После того, как вы отсканируете изображение оно сохранится
Глава 32. Распознавание
Глава 32. Распознавание Задача распознавания состоит в том с тем, чтобы преобразовать отсканированное изображение в текст, сохранив при этом оформление страницы. Прежде чем приступить к распознаванию текста, необходимо установить основные параметры распознавания: язык
FineReader – распознавание текста
FineReader – распознавание текста Ввести со сканера текст в компьютер – задача не слишком трудная. Однако работать с таким текстом невозможно: как и любое сканированное изображение, страница с текстом представляет собой графический файл – обычную картинку. Отсюда возникают
Сканирование и распознавание
Сканирование и распознавание Ввести со сканера текст в компьютер – задача не слишком трудная. Однако работать с таким текстом невозможно: как и любое сканированное изображение, страница с текстом представляет собой графический файл – обычную картинку. Отсюда возникают
Глава 8 Сканирование, распознавание и конвертирование с помощью ABBYY FineReader
Глава 8 Сканирование, распознавание и конвертирование с помощью ABBYY FineReader В процессе написания работы вам наверняка будут встречаться тексты или рисунки из книг и журнальных статей, которые вам захочется поместить в свой документ. Если вы планируете использовать
ПИСЬМОНОСЕЦ: Распознавание опечатков
ПИСЬМОНОСЕЦ: Распознавание опечатков Автор: Владимир ГуриевДо первого апреля еще далеко, но посмешить народ уже хочется. Так попробуем же…Думаю, редакция «Терры» прекрасно знает, как мы доверяем нашему любимому журналу. И по этому поводу у меня возникла одна мысль: а что,
Распознавание вида компонент
Распознавание вида компонент Компоненты x и y объявлены как относящиеся к типу REAL без ассоциированного алгоритма, следовательно, они являются атрибутами. Все остальные компоненты содержат конструкции видаisdo... Инструкции ...endкоторые описывают алгоритм, что является
"Яндекс" вложился в распознавание лиц Юрий Ильин
"Яндекс" вложился в распознавание лиц Юрий Ильин ОпубликованоЮрий Ильин Компания «Яндекс» впервые инвестировала в иностранную компанию, причём занимающуюся весьма перспективным направлением деятельности — распознаванием лиц на цифровых
Распознавание лица
Распознавание лица В отличие от других систем биометрической идентификации, распознавание лица носит пассивный характер: оно может осуществляться без ведома человека, позволяя производить идентификацию в лифте или при проходе через дверь. Сегодня биометрические