|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.04.2016, 19:28 | #1 |
Пользователь
Регистрация: 31.01.2016
Сообщений: 67
|
для этого ли нужны делегаты?
всем привет, только начал изучать делегаты. Имеется вот такой пример:
Код:
Код:
Код:
Ошибка 1 Для нестатического поля, метода или свойства "Delegates.MyClass.Method(strin g)" требуется ссылка на объект делегат это и есть объект, содержащий в себе указатели на методы. Т.е этот пример с ошибкой допущенной мной ради эксперимента, и есть наглядный или можно сказать жизненный пример почему необходимо использовать делегаты? Если так, то хорошо, если нет то приведите свои жизненные примеры использования делегатов. |
30.04.2016, 19:41 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Дык Method не static, для его вызова нужен экземпляр класса.
Вы ж instance создавали выше.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
02.05.2016, 10:02 | #3 |
Пользователь
Регистрация: 31.01.2016
Сообщений: 67
|
Здравствуйте, спасибо за ответ. Я так понял, вы имеете ввиду, что экземпляры делегатов принимают в качестве параметра метод вызванный не только на классе-объекте:
Код:
Код:
Первый способ, где в конструкторе делегата мы передаем метод – вызывая его на классе-объекте того класса, где этот метод содержится, Но первый способ работает только если метод static. Второй же способ напротив не будет работать со static классами т.к – невозможно создать экземпляр static класса. в своем вопросе, я имел ввиду, что могут ли делегаты (делегаты - объекты с указателями на методы) в неком роде (в таком случае как при вызове не static метода ) заменить экземпляры(ведь экземпляр – это область памяти, которая хранит в себе нестатические поля) да, нестатические поля и методы это не одно и тоже, но могу ли я сравнивать экземпляры и делегаты в том смысле, что и первые и вторые в с себе что-то хранят и передают часть кода который в себе содержат при их вызове? Ведь, как мне объяснили на другом форуме Делегаты — это способ сделать следующее: взять произвольный кусок кода, упаковать его в объект (экземпляр делегата) и вызвать этот кусок кода в любом месте, куда получится передать ссылку на наш экземпляр делегата. Просто если разница между классами и структурами для меня стала очевидной – классы хранятся на куче, структуры в стеке, то для чего на реальной практике они используются я понять не могу (и да, я некоем образом напрямую не сравниваю делегаты, и экземпляры -как абстракцию ) |
02.05.2016, 10:29 | #4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Причем тут делегаты, это обычный вызов метода у экземпляра класса.
для static не нужен экземпляр, для не static нужен, в этом весь смысл static. А в делегат что передадите, то и вызовется. Можно и вообще лямбду или анонимный метод использовать например Код:
Код:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 02.05.2016 в 10:50. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как написать формулу для этого? | 777pro777 | Microsoft Office Excel | 1 | 14.02.2012 08:11 |
После сохранения в файл *.xls при открытии этого файла выдается предупреждение. Как от этого избавиться? | A-IX-2 | Общие вопросы Delphi | 1 | 13.11.2011 20:33 |
Парни староват я для этого!! | Иост | Помощь студентам | 0 | 31.05.2011 22:05 |
Хочу сделать форму для ввода паролей! Для этого текст должен быть зашифрован в (*****) ! Как сделать | vitaaly | Visual C++ | 2 | 12.02.2011 12:29 |
нарисуйте алгоритм для этого кода! | Falkone | Общие вопросы Delphi | 0 | 16.05.2010 16:17 |