Вы находитесь на странице: 1из 20

Programao em C# com Visual Studio .

NET

Prof. Eder Samaniego Villalba

Por que Delegates?

O C# uma linguagem altamente tipificada, portanto um evento precisa passar parmetros ao mtodo de destino, e por isso, no podemos atribuir mtodos quaisquer a eventos, devemos seguir o padro. Se fosse permitido atribuirmos um mtodo diretamente a um evento, no haveria lugar para formalizar o nmero de parmetros (a assinatura do mtodo).
Programao em C#

Por que Delegates?

Precisamos de um meio de descrever uma assinatura de mtodo concordante, e para isso que servem os delegates. Delegates so objetos de primeira classe, totalmente suportados pela linguagem. Um delegate um tipo de referncia usado para encapsular um mtodo como uma assinatura e um tipo de retorno especfico.

Programao em C#

Por que Delegates?

Pode-se encapsular qualquer mtodo usando um delegate, mas o mtodo deve coincidir com o delegate usado. Definio do delegate:

Assinatura de um mtodo

Instncia do delegate:

Um objeto contendo um ponteiro para o mtodo


concordante com a assinatura

Programao em C#

Por que Delegates?


public delegate void EventHandler(Object sender, EventArgs e);

Assinatura com 2 parmetros, um tipo Object e um EventArgs. Por que eu preciso de uma referncia a um mtodo? Mximo de flexibilidade para implementar qualquer funcionalidade que voc quer no decorrer do processo.
Programao em C#

Por que Delegates?


O EventHandler o delegate usado no .NET. Os eventos so sempre declarados deste tipo, desde que no exijam que nenhuma informao especial seja enviada ao destino.
EventHandler eh = new EventHandler(textbox1_Click);

Instncia de delegate. Ponteiro a textbox1_Click.

Programao em C#

Por que Delegates?

O compilador ir verificar se a assinatura do mtodo destino corresponde definio do delegate. Anexando eh ao evento Click de myTextBox.
myTextBox.Click += eh;

Programao em C#

Exerccio - Delegates

Crie um Console Application. Defina um delegate, logo aps o namespace. Crie uma outra classe chamada MyClass Criw mtodos a serem associados ao delegate, coloque-os na MyClass

Programao em C#

Exerccio - Delegates

Programao em C#

Exerccio - Delegates

Crie objetos delegate e associe os mtodos (no Program.cs)

Programao em C#

10

Exerccio - Delegates

Chamando os mtodos

Programao em C#

11

Exerccio - Delegates

Os eventos em C# so introduzidos junto com os delegates. Por conveno, os manipuladores de eventos do .NET Framework retornam void e recebem dois parmetros. O primeiro parmetro a fonte do evento (ou seja, o objeto que faz a publicao). O segundo parmetro um objeto derivado do EventArgs.
Programao em C#

12

Exerccio - Delegates

recomendvel que seus manipuladores de eventos sigam esse padro. O EventArgs a classe que serve de base para todos os dados de evento. A assinatura de um evento parecido com este abaixo:
public event delegateInteiro eventoInteiro;

Programao em C#

13

Exerccio - Delegates

Criar um programa que simula uma passagem de tempo. Adicione o namespace System.Threading, com ele iremos simular um intervalo de tempo e ver os dias passarem.

Programao em C#

14

Exerccio - Delegates

Crie a classe de eventos

Programao em C#

15

Exerccio - Delegates

Crie uma estrutura com dia, ms e ano.

Programao em C#

16

Exerccio - Delegates

Crie a classe passagem de tempo

Programao em C#

17

Programao em C#

18

Programao em C#

19

Programao em C#

20

Вам также может понравиться