| 
| 
 | Вопрос # 2 970/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Для проверки принадлежности к классу применяется оператор IS. У меня есть основной интерфейс IInput и IBassSound, предком которого является IInput. Вопрос : как определить принадлежность к интерфейсу?
 
 if Input is IBassSound then
 не работает. Пишет ошибку, что нельзя применять оператор для данного типа.
 
|  |   Вопрос задал: Виталий (статус: 2-ой класс)Вопрос отправлен: 4 июля 2009, 17:58
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Паровоз Здравствуйте, Виталий!Стало быть так.
 1) Если Вы напишите что-то типа TButton is TComponent, то компилятор также сообщит об отсутствии у Вас базовых знаний по языку.
 2) Слева от оператора is дожен быть объект, а не класс. Необходимость применения оператора as возникает из наличия свойства полиморфизма у объектов.
 3) Интерфейсы свойством полиморфизма не обладают.
 
|  | Ответ отправил: Паровоз (статус: 10-ый класс)Время отправки: 5 июля 2009, 09:38
 
 |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 5 июля 2009, 11:00; участников в обсуждении: 2. 
|   | Виталий (статус: 2-ой класс), 4 июля 2009, 22:36 [#1]:Ни ужели никто не знает? |  
|   | Паровоз (статус: 10-ый класс), 4 июля 2009, 23:55 [#2]:Интерфейс - это описание методов и их параметров. Каждый интерфейс однозначно определяет свой набор методов. Поэтому смысл Вашего вопроса совершенно неясен. Разъясните подробнее свою цель. |  
|   | Виталий (статус: 2-ой класс), 5 июля 2009, 09:53 [#3]:Ну, во-первых, я написал if Input is IBassSound then, где Input переменная типа IInput. 
 Во-вторых, у интерфейсов тоже есть наследование, т.ч. они могут содержать одинаковые наборы методов.
 
 И в заключении, я уже сделал через функцию, которая возращает GUID интерфейса в виде строки, так что интерфейсы можно спокойно различить.
 Но спасибо, что хоть один откликнулся (оценку ставить не стал, чтобы оценку не портить).
 |  
|   | Паровоз (статус: 10-ый класс), 5 июля 2009, 11:00 [#4]:"у интерфейсов тоже есть наследование" Оператор is применяется не тогда, когда речь идет о наследовании, а тогда, когда речь идет о полиморфизме, которым переменные интерфейсных типов не обладают.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |