|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.04.2016, 13:13 | #1 |
Пользователь
Регистрация: 31.01.2016
Сообщений: 67
|
делегаты и их экземпляры
всем привет, только начал учить делегаты. и пока понял следующее:
для того, чтобы создать делегат, мы сперва создаем класс-делегат(да,да я знаю, что это не совсем корректное название ) Код:
Код:
Код:
Код:
Код:
А если сигнатура метода, который мы хотим сообщить отличается от существующего уже в программе класса-делегата, то нам необходимо создать новый, который бы описывал другую сигнатуру нужного нам метода(тип возвращаемого и принимаемого значений) и затем соответственно экземпляр по этому классу-делегату. Т.е как я понял если сигнатура двух-трех методов в программе одинакова(кроме имени), то мы можем просто "клипать" экземпляры делегатов, каждый из которых будет сообщен со своим из этих нескольких методов. И если три метода с одинаковой сигнатурой, а четвертый - с отличной, то для этого придется создать уже новый класс-делегат. Я правильно все понял? Последний раз редактировалось BadCats; 15.04.2016 в 13:16. Причина: смена заголовка |
15.04.2016, 13:55 | #2 |
Форумчанин
Регистрация: 06.10.2011
Сообщений: 181
|
Не совсем так. Для начала, если у тебя совпадает сигнатура нескольких методов, то ты можешь одному экземпляру делегата присваивать их. Т.е.:
Код:
Второй момент. Как правило очень редко тебе придется "описывать" свой делегат. На эти случае в шарпах уже придусмотрены делегаты Action<> и Func<>, но ты до них видимо еще не дошел. |
15.04.2016, 14:14 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
http://programmersforum.ru/showthread.php?t=291965
вы тут так и не прочли видимо? естественно для присвоения делегату метода сигнатура должна совпадать, иначе не вызовете же. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Универсальный делегат | inmyacid | C# (си шарп) | 3 | 12.02.2014 19:55 |
Преобразовать строку с функцией в делегат | FiloXSee | C# (си шарп) | 1 | 08.10.2012 13:35 |
Делегат СompareDelegate<T> | Николая Ленин | C# (си шарп) | 1 | 13.04.2012 15:32 |
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА | Юрий62 | Помощь студентам | 1 | 04.12.2011 14:09 |
Делегат, интерфейс, событие. | pa6kevi4 | Общие вопросы .NET | 1 | 25.05.2010 19:26 |