Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouPaula Vilaverde Machado Alterado mais de 8 anos atrás
1
C# Universidade Federal de Pernambuco Centro de Informática Recife, 10/10/2002 Autor: Alexandre T. Vasconcelos Delegates
2
Definição -Elemento que permite referenciar um ou vários métodos. -Oferece flexibilidade máxima de implementar qualquer funcionalidade em tempo de execução.
3
Definição Declaração delegate type DelegateTypeName(...) Instanciação new DelegateTypeName( NameOfMethodToDelegate ); ---- Como classes----
4
Características Métodos que vão ser referenciados precisam ter a mesma assinatura da declaração do delegate, ou seja, mesmos parâmetros e mesmo retorno; Delegates guardam uma “lista” de métodos; Um delegate vazio é igual a null;
5
Implementação using System; namespace Delegate { delegate void meuDelegate(string s); //declaração class minhaClasse { public static void Ola(string s) { Console.WriteLine ("Ola, {0}!", s); } public static void Txau(string s) { Console.WriteLine("Txau, {0}!", s); }
6
Implementação static void Main(string[] args) { meuDelegate a, b; a = new meuDelegate(Ola); b = new meuDelegate(Txau); a("A"); b("B"); } // fim do Main } // fim da classe } // fim no namespace
7
Saída
8
Outra... delegate void Foo(int x); class MyClass{ void SomeMethod(int y){ … } int AnotherMethod(int z){ … } } class MyOtherClass{ void YetAnother(){ … } static void SomeOther(int z){ … } } Thinking in C#
9
Outra... delegate void Foo(int x); class MyClass{ void SomeMethod(int y){ … } int AnotherMethod(int z){ … } } class MyOtherClass{ void YetAnother(){ … } static void SomeOther(int z){ … } } Thinking in C#
10
Observação Delegates só podem instanciar métodos estáticos ou métodos de objetos que já tiverem sido instanciados. Exemplo a seguir...
11
//Teste.cs //Declaração e Instância de delegates delegate void Teste(); class minhaClasse{ static void MetodoEstatico(){ System.Console.WriteLine(“Estatico"); } void MetodoInstanciado(){ System.Console.WriteLine(“Instanciado"); }
12
public static void Main(){ //referências dos delegates são null Teste p1; Teste p2; p1 = new Teste(minhaClasse.MetodoEstatico); p1(); minhaClasse s = new minhaClasse(); p2 = new Teste(s.MetodoInstanciado); p2();
13
Mais... - Todos os eventos, tão importantes para o funcionamento do ambiente de desenvolvimento, são “delegates” - Os delegates permitem que uma classe chame métodos em outras sem exigir que esta outra classe seja derivada de um ancestral conhecido.
14
Referências Thinking in C# http://www.csharp-station.com/Tutorials
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.