A seguinte linha foi gerada pelo Visual Studio no evento KeyDown
Eu não entendi porque o objeto KeyEventHandler está sendo concatenado ao atributo KeyDown. Isso quer dizer que eu posso ter vários objetos associados ao atributo KeyDown? Como funciona isso?
Agora, uma dúvida: não me leve a mal, mas você não tem um Visual Studio rodando aí para ver o que acontece?
Nada como ver a acontecendo para entender como funciona.
Na verdade, isso aí é chamado de combined delegate.
Todos os delegates do C# podem ser combinados, num único delegate, que faz a chamada de todos em sequencia. Na prática, é o mesmo que ter uma lista desse exemplo, e o C# fará a chamada sequencialmente nessa lista.
Delegates são adicionados a lista com += e removidos com -=.
[quote=ViniGodoy]Na verdade, isso aí é chamado de combined delegate.
Todos os delegates do C# podem ser combinados, num único delegate, que faz a chamada de todos em sequencia. Na prática, é o mesmo que ter uma lista desse exemplo, e o C# fará a chamada sequencialmente nessa lista.
Delegates são adicionados a lista com += e removidos com -=.
Sim. O delegate é uma espécie de ponteiro de função (ou funçoes). Mas ele funciona para métodos também, nesse caso, o c# manterá a instancia do objeto ativa enquanto seu metodo estiver num delegate. São um otimo substituto para aquelas interfaces com um só método (como a Runnable ou ActionListener do Java).
Hum, entendi. Tava vendo esse artigo do site da Microsoft sobre delegates. Não sabia desse recurso do C#, se bem que eu conheço a linguagem há pouco tempo. Cada vez mais me surpreendo com C#, até assembly inline eu descobri que a linguagem suporta.
Valeu ViniGodoy e AbelBueno pelos esclarecimentos.