![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Allexx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 16.12.2003 Репутация: нет Всего: нет |
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Делегату (как методу) передаётся вызов с заданными аргументами. Внутри себя делегат (как класс) перечисляет подписчиков и вызывает каждого из них, передавая им эти же аргументы. Кстати, а как в JAVA добавить обработчик события, если метод-обработчик является статическим ? ![]() В .net такое возможно за счёт того, что делегат (как класс) хранит в списке подписчиков не только указатель на метод, но и указатель на объект, а для статических обработчиков - только указатель на статический метод класса. -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Никак, нельзя реализовывать методы интерфейса как статики ![]() Но я большой разницы не вижу - ну, можно делегатом сделать статик метод. Вопрос - зачем? -------------------- |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Может быть класс-утилита, обрабатывающая события. Его методы реализуются как public static, и всем доступны всем классам из любой точки. К примеру, класс, сохраняющий сообщения в лог-файл. Можно сделать то же самое с пом. синглетона, но если по какой-либо причине это не подходит (ну например, мне нужно чтобы файл был открыт статическим конструктором класса, а не при обращении к Instance) - то всё делается статическими методами. -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Можно, но возможных реализаций всегда можно много выискать. Того же можно достичь, реализовав методы как инстанс методы, и из них менять статик поля - вот поля и будут доступны всем. Правда, нужно создавать объект класса; но ведь любой делегат озбначает, что будет "за кулисами" создан целый класс.
-------------------- |
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
"За кулисами" (в классе делегата) создаётся только список подписавшихся методов, и список этот размещается "публикаторе" события (делегата). Никаких требований к подписчикам не выставляется - пусть они будут хоть статическими, хоть методами объекта класса. Это я к тому, что без делегатов приходится идти окольным путём для статиков:
-------------------- ![]() |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Насчёт кроссплатформенности.
Есть в инете такая библиотека GTK+, которую портировали на C#. Вкратце, это полноценная замена System.Windows.Forms. Вместе с GTK# можно разрабатывать любые приложения для Mono, Win и любых других платформ, на которые будет переведён .NET Framework. Теперь про JAVA... ![]() Мобильники у всех есть? Игры скачивали, устанавливали? Ага, вот то-то и оно ![]() ![]() -------------------- ![]() |
|||
|
||||
batigoal |
|
||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Я бы выделил слово БУДЕТ большими буквами ![]()
Мне кажется, это недостаток производителей телефонов - плохая реализация исполняющей системы. Это сообщение отредактировал(а) Lamer George - 7.4.2005, 11:42 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
То есть, если так рассуждать, то проблема сводится к плохой реализации JVM в данном телефоне ? Байт-код, что ли, криво выполняется ? Тогда причём тут высокоуровневые заточки, когда программеру нужно избегать использовать какие-то классы из фреймворка J2ME ? -------------------- ![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Так не программеру нужно избегать, а производителю мобилы бороться за то, чтобы его JVM полностью соотвтствовала стандарту. Не знаю, кто пишет исполняющую среду Java для win, linux и прочих осей - разработчики операционки или Sun'овцы - но для мобильников-то наверняка производитель делает это сам. Значит, он ответственен за точное соответствие спецификации виртуальной машины. P.S. А .NET на мобилы разве ставят? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
ставят, на смартфоны. -------------------- ![]() |
|||
|
||||
NotGonnaGetUs |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 25.2.2005 Где: Москва Репутация: нет Всего: 12 |
C мобилами есть другая проблема.
Каждый производитель создаёт собственный библиотеки, что бы предоставить те или иные доп. функции. Естественно, если написать приложение используещее "фичи" конкретного телефона, на другом телефоне оно не заработает. А с байт кодом всё впорядке ![]() Пройдёт ещё не много времени и на телефонах можно будет смело ставить "обычную" j2se %) |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Вот вы спорите-спорите, а никто так и не сказал, что обе среды просто по разному реализуют паттерн Observer. Лично мне по душе ближе реализация .NET, потому что она более слабосвязанная - на классы-публикаторы или потребители событий не накладывается никаких ограничений, т.е не надо создавать и тем более реализовывать никаких интерфейсов.
|
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
А разве интерфейс - это ограничение? ![]() ![]() -------------------- |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Понял, повторяя сказанное, такая вещь, как анонимные методы будет в .NET 2.0 и уже есть в Mono 1.1.6. Это будет аналог того, о чем ты говоришь.
|
|||
|
||||
stab |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
С другой стороны, методу можно дать хорошее описательное имя, например closeButton_Click, а в Java так и останется actionPerformed. Вообще, я так понимаю из этого кода:
что коментарий /* действия */, если его заменить на код, разворачивается в блок switch... эммм, если это так, то очень уж это смахивает на древний подход обработки сообщений из Win32 API. Читабельность у такого блока нулевая. -------------------- 6, 6, 6 - the number of the beast. |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |