![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Возможно, объясню немного путано...
Ситуация такая. Есть общий класс "рыбка" (Fish), реализующий некоторые основные действия для рыбок. От него есть пара производных классов (щука и карась). Их смысл только в нескольких отличных друг от друга параметрах, поведение в общем одинаково у обоих и просто наследуется от исходного класса Fish. Также существует озеро, где эти рыбки живут и здравствуют. Озеро задано, естественно, прямоугольной сеткой. Причем, каждый элемент сетки содержит ссылку на объект Fish. При заполнении сетки в конкретные ячейки запихиваются либо new Pike() (щука), либо new Crucian() (карась), те самые производные классы. Проблема в следующем. При проходе по сетке в определенной ситуации мне нужно точно знать, что за класс в данном элементе - щука или карась. Однако, метод типа
Не работает, поскольку всегда истинным считается первое условие... Вот вопрос... Как мне организовать распознавание, какой именно класс лежит в данном элементе? У меня есть мысль, как обойти это. Но это будет именно обходной путь, а хотелось бы как-то "прямо" сделать. Есть прямой метод? Типа того, что я привел выше, но работающий? |
|||
|
||||
Grok |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 17.12.2007 Репутация: нет Всего: нет |
да, странно что is не работает, с интерфейсами все ок....
можно в класс рыбка ввести идентификатор, который будет соответственно разный у щуки и карася, и по нему уже определять класс.... Добавлено через 4 минуты и 41 секунду а можно вместо базового класса использовать IFish ![]() |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 5 Всего: 24 |
"Библиотека классов платформы .NET Framework
Object..::.ToString - метод .... Возвращает объект String, который представляет текущий объект Object. " как я понимаю если у вас не переопределен метод ToString то запросив его можно получить название класса? |
|||
|
||||
PashaPash |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
mr.Anderson, должен работать и вариант с is. Если, конечно, Crucian не унаследован от Pike. Отладь до места, когда _lake[x, y] is Pike срабатывает на Crucian, и глянь тип _lake[x, y].
Grok, Экскалупатор, Object.GetType вполне нормально возвращает уникальный идентификатор типа - сам тип. |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Абсолютно согласен с PashaPash, должно работать. Видимо у Вас где-то, что-то не так)))
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Был мой косяк. Всем спасибо) С is работает, как и должно было.
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |