|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||||||||||
Передача делегата в обобщенную функцию04.09.2017, 19:24. Показов 3886. Ответов 26
Метки нет (Все метки)
Доброго времени суток, Господа. Потихоньку изучаю делегаты.
Не могу понять, как реализовать вот такую вещь:
Я хочу при вызове этой функции, передавать делегат( как я понял, все делегаты являются наследниками MulticastDelegate ), который выглядеть будет примерно так: void delegate MyDelegate( int x, int y ), что соответствует вызову внутри функции Func. Параметр обобщения буду передавать тип MyDelegate, чтобы правильно привести его внутри.Вообщем вызов должен быть таким:
0
|
|||||||||||
| 04.09.2017, 19:24 | |
|
Ответы с готовыми решениями:
26
Передача делегата в функцию Составить обобщенную функцию Лагранжа
|
|
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
|
||||||
| 05.09.2017, 23:11 | ||||||
|
Я вот подумал: а зачем тут вообще дженерик?
Можно же в таком духе:
0
|
||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||||||||||
| 06.09.2017, 07:57 [ТС] | |||||||||||
|
TopLayer, Можно и так. Я тоже думал об этом. А вызов InvokeEvent все равно должна быть обобщенная же? Уже так не прокатит как с Sub/SubscribeEvent...
Вы не знаете почему нельзя ограничивать тип T до Delegate? Тоесть where T : Delegate. Почему-то мой вопрос игнорят![]() И как лучше исключения пускать? Так:
0
|
|||||||||||
|
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
|
|||||||||||||
| 06.09.2017, 09:08 | |||||||||||||
Сообщение было отмечено Bretbas как решение
РешениеSystem.Object, System.Array, System.Delegate, System.Enum, System.ValueTypeв качестве ограничения на базовый класс для дженериков. Это ошибка компиляции CS0702. Не совсем понятно, почему так сделали, особенно учитывая тот факт, что на неприкрытое ограничение на базовый класс эта ошибка не распространяется:
1
|
|||||||||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 06.09.2017, 13:39 [ТС] | |
|
0
|
|
|
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
|
|||||||||||||||||
| 06.09.2017, 13:54 | |||||||||||||||||
Есть в сети рекомендации, что так, типа, лучше не делать, мол, долго (два метода вызываются).
Она самая тормозная.
1
|
|||||||||||||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||
| 06.09.2017, 14:38 [ТС] | |||
|
Fleder,
events.TryGetValue(typeof(T), out var value)?![]() Если этот вариант самый быстрый, то буду придерживаться его
0
|
|||
|
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
|
||
| 06.09.2017, 14:46 | ||
|
1
|
||
| 06.09.2017, 14:46 | |
|
Сделать обобщенную функцию, которая поворачивает фигуры на заданный угол, описав класс треугольник и квадрат Разница лямбда выражения, делегата (\анонимного делегата), методом (\анонимных методов) Отличие делегата от делегата с лямбда-выражением
Модифицировать программу так, чтобы можно было передавать функцию в виде делегата Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|