Следуя этому вопросу - передать метод как параметр с помощью С#, и некоторые из моих личных впечатлений я хотел бы узнать немного больше об эффективности вызова делегата vs просто вызов метода в С#.
Несмотря на то, что делегаты чрезвычайно удобны, у меня было приложение, которое выполняло множество обратных вызовов через делегатов, и когда мы переписали это для использования интерфейсов обратного вызова, мы получили порядок увеличения скорости. Это было с .NET 2.0, поэтому я не уверен, как все изменилось с 3 и 4.
Как вызовы делегатам обрабатываются внутри компилятора /CLR и как это влияет на производительность вызовов методов?
РЕДАКТИРОВАТЬ. Чтобы уточнить, что я имею в виду делегатами и обратными интерфейсами.
Для асинхронных вызовов мой класс может предоставить событие OnComplete и связанный с ним делегат, к которому может присоединиться абонент.
В качестве альтернативы я мог бы создать интерфейс ICallback с помощью метода OnComplete, который реализует вызывающий, и затем регистрируется с классом, который затем будет вызывать этот метод при завершении (т.е. как Java обрабатывает эти вещи).