Вы не можете обновиться без предупреждения; обновление дает браузеру команду повторять последнее действие. Это до браузера, чтобы выбрать, предупредить ли пользователя при повторении, что последнее действие включает повторно отправляющие данные.
Вы могли повторно перейти к той же странице с новой сессией путем выполнения:
window.location = window.location.href;
Да, вы можете использовать интерфейс с одним методом вместо делегата. Вам также понадобится реализация многоадресной природы делегатов как с точки зрения добавления / удаления, так и с точки зрения вызова. Однако было бы сложно иметь единственный класс , реализующий многоадресную рассылку, а также реализующий Invoke
безопасным способом из-за того, что интерфейсы имеют разные числа и типы параметров. У вас, конечно, может быть несколько таких: Multicast
, Multicast
и т. Д. (Возможно, тот же класс будет обрабатывать и асинхронное выполнение).
Другая проблема в том, что вы могли реализовать интерфейс только один раз для каждого класса,
Нет, вы не можете выполнять события в C # без делегатов. В C # события определяются как делегаты:
Событие
- это член, который позволяет классу или объекту предоставлять уведомления. Событие
объявляется как поле, за исключением того, что объявление включает ключевое слово
event
, а тип должен быть типом делегата.
Однако вы можете имитировать события, используя Паттерн наблюдателя .
Это довольно старый документ, посмотрите, откуда он их взял. Если хотите, вы можете сделать то же самое в .NET. Все, что делает «Java Way», - это использование наследования. Это нормально, но для многих семантика «указателя на функцию» гораздо более прямолинейна и менее подробна.
Да, можно. Вы можете использовать предопределенные делегаты. (Я не уверен, каков ваш уровень опыта и о чем вы действительно спрашиваете)
Зачем вам это нужно? Я имею в виду, что если у вас есть механизм правил или команды, которые являются чем-то большим, чем просто обработчики событий, то обязательно: вы захотите реализовать интерфейс, потому что у вас будет состояние и поведение помимо фактического фрагмента кода, который вы хотите запустить.
Но если предоставить какой-то код для запуска при возникновении события, тогда нет причин не использовать делегаты.
Делегаты представляют собой тонкие абстракции по сравнению с указателями методов / функций и, как таковые, добавляют очень мало накладных расходов. И ИМО, не следует добавлять накладные расходы только ради этого.