В C# мы могли предположить писать наши собственные события, не пишущий делегатам?

Вы не можете обновиться без предупреждения; обновление дает браузеру команду повторять последнее действие. Это до браузера, чтобы выбрать, предупредить ли пользователя при повторении, что последнее действие включает повторно отправляющие данные.

Вы могли повторно перейти к той же странице с новой сессией путем выполнения:

window.location = window.location.href;
5
задан Vadim Kotov 18 September 2017 в 09:06
поделиться

5 ответов

Да, вы можете использовать интерфейс с одним методом вместо делегата. Вам также понадобится реализация многоадресной природы делегатов как с точки зрения добавления / удаления, так и с точки зрения вызова. Однако было бы сложно иметь единственный класс , реализующий многоадресную рассылку, а также реализующий Invoke безопасным способом из-за того, что интерфейсы имеют разные числа и типы параметров. У вас, конечно, может быть несколько таких: Multicast , Multicast и т. Д. (Возможно, тот же класс будет обрабатывать и асинхронное выполнение).

Другая проблема в том, что вы могли реализовать интерфейс только один раз для каждого класса,

8
ответ дан 18 December 2019 в 10:46
поделиться

Нет, вы не можете выполнять события в C # без делегатов. В C # события определяются как делегаты:

Событие - это член, который позволяет классу или объекту предоставлять уведомления. Событие объявляется как поле, за исключением того, что объявление включает ключевое слово event , а тип должен быть типом делегата.

Однако вы можете имитировать события, используя Паттерн наблюдателя . ​​

Ответ Microsoft на White Paper Sun стоит прочитать.

7
ответ дан 18 December 2019 в 10:46
поделиться

Это довольно старый документ, посмотрите, откуда он их взял. Если хотите, вы можете сделать то же самое в .NET. Все, что делает «Java Way», - это использование наследования. Это нормально, но для многих семантика «указателя на функцию» гораздо более прямолинейна и менее подробна.

1
ответ дан 18 December 2019 в 10:46
поделиться

Да, можно. Вы можете использовать предопределенные делегаты. (Я не уверен, каков ваш уровень опыта и о чем вы действительно спрашиваете)

0
ответ дан 18 December 2019 в 10:46
поделиться

Зачем вам это нужно? Я имею в виду, что если у вас есть механизм правил или команды, которые являются чем-то большим, чем просто обработчики событий, то обязательно: вы захотите реализовать интерфейс, потому что у вас будет состояние и поведение помимо фактического фрагмента кода, который вы хотите запустить.

Но если предоставить какой-то код для запуска при возникновении события, тогда нет причин не использовать делегаты.

Делегаты представляют собой тонкие абстракции по сравнению с указателями методов / функций и, как таковые, добавляют очень мало накладных расходов. И ИМО, не следует добавлять накладные расходы только ради этого.

0
ответ дан 18 December 2019 в 10:46
поделиться