Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 26.01.2015
Сообщений: 6
1

Понимание анонимных функций

18.08.2015, 13:20. Просмотров 469. Ответов 4
Метки нет (Все метки)


Доброе время суток. Имеется делегат:
C#
1
delegate void StudentListHandler(object source,StudentListHandlerEventArgs args);
Событие, которому решил на стадии объявления присвоить пустую анонимную функцию, во избежание дальнейшей проверки на наличие подписки у нему.
К моему удивлению такой код(использование анонимного метода) не вызвал ошибки компиляции:
C#
1
public event StudentListHandler StudentCountChanged = delegate { };
А такой вызывает(использование лямбда-выражения):
C#
1
public event StudentListHandler StudentCountChanged = () => { };
Что происходит в 1ом случае? Ведь сигнатура делегата и анонимного метода не совпадает.
Или исполняемая среда сама подставляет необходимые параметры? Или же она каким то образом игнорирует их?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2015, 13:20
Ответы с готовыми решениями:

Клиент-сервер, передача анонимных функций
Всем привет! Разработкой на C# занимаюсь не давно и многое еще не знаю и мне нужен совет знающих...

Утечка памяти в IE при использовании анонимных вложенных функций
Internet Explorer 4-6 сильно пожирает память, если на странице используются анонимные вложенные...

Как переделать эти строчки, без использования анонимных функций?
var parentLI = $("#nav .parent"); parentLI.hoverIntent(function() { showUL($(this)); },...

Метод потенциальных функций понимание алгоритма
Помогите разобраться в алгоритме, кажется я не правильно понимаю. Есть массив объектов, вида...

4
Эксперт .NET
14836 / 11224 / 2946
Регистрация: 17.09.2011
Сообщений: 18,796
18.08.2015, 14:20 2
Цитата Сообщение от Nixtyle Посмотреть сообщение
Или исполняемая среда сама подставляет необходимые параметры? Или же она каким то образом игнорирует их?
Если отталкиваться от семантики, то параметры игнорируются, если от реализации компилятора, то он сам подставляет нужные.
1
0 / 0 / 0
Регистрация: 26.01.2015
Сообщений: 6
18.08.2015, 14:32  [ТС] 3
Т.е, если я правильно понял, в случае использования анонимного метода, компилятор подставляет нужные параметры с нулевыми значениями. А реализация лямбда выражений требует более строгое соблюдение синтаксиса и в них подобное провернуть нельзя. Так?
0
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
18.08.2015, 17:46 4
Nixtyle, если говорить просто - при использовании анонимного делегата вы можете подставлять (а можете и не подставлять) параметры метода.
При использовании же лямбда вы обязаны их подставить (даже если и не планируете их использовать внутри обработчика).
1
0 / 0 / 0
Регистрация: 26.01.2015
Сообщений: 6
18.08.2015, 18:28  [ТС] 5
Понятно. Спасибо за ответы!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2015, 18:28

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Сравнение анонимных типов
есть метод контроллера, который возвращает JsonResult public JsonResult SomeMethod() { ...

Оптимизация анонимных делегатов
Здравствуйте. У меня есть класс, в котором есть делегат Del и его поле Del Stats, в котором...

Использование анонимных методов
Анонимные методы используются, когда нужно создать метод для обработки какого-то события и больше...

Refcursor в анонимных блоках
Такой запрос проходит. variable v_refcur refcursor; execute artist_select(:v_refcur, 4, 'Pink...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.