Marcas Technorati: C# 2.0,métodos anónimos,anonymous methods,delegates
Até aparecer o C# 2.0, a única forma de declarar delegates, era utilizar métodos normais, com um nome atribuido, que eram declarados como métodos separados.
Os métodos anónimos são essencialmente um maneira de passar um bloco de código como parâmetro, utilizando um delegate.
A utilização de métodos anónimos permite reduzir o código, pois não necessitamos de criar um método separado, logo o código fica mais limpo e intuitivo.
A especificação de um bloco de código como delegate pode ser muito útil em situações em que criar um método é desnecessário. Por exemplo no código seguinte, em que lançamos uma nova thread:
void StartThread()
{
System.Threading.Thread t1 = new System.Threading.Thread
(delegate()
{
System.Console.Write("Hello, ");
System.Console.WriteLine("World!");
});
t1.Start();
}
De seguida está o código de uma classe, em que podemos ver a diferença entre um delegate com uma associação normal (como se fazia antes do C# 2.0), e utilizando um método anónimo (C# 2.0).
using System;
namespace ConsoleApplication
{
//Declare a Delegate
internal delegate void Printer(string s);
class Program
{
static void Main(string[] args)
{
// Instatiate the delegate type using an anonymous method:
Printer p = delegate(string j)
{
Console.WriteLine(j);
};
// Results from the anonymous delegate call:
p("The delegate using the anonymous method is called.");
// The delegate instantiation using a named method "DoWork":
p = new Printer(Program.DoWork);
// Results from the old style delegate call:
p("The delegate using the named method is called.");
}
// The method associated with the named delegate:
static void DoWork(string k)
{
Console.WriteLine(k);
}
}
}
Como podem ver pelo código anterior, com a utilização dos métodos anónimos, não necesitamos de declarar métodos separados para associar ao delegate, basta declará-los logo na instanciação do mesmo.
Os métodos anónimos são apenas uma forma mais fácil de escrevermos o código, porque depois de compilado, é gerado o método separado, tal como acontecia na versão 1.1. Do ponto de vista do código gerado fica tudo igual, apenas passamos trabalho para o compilador.
Se gostaram deste artigo subscrevam a feed RSS do istomesmo, para ficarem actualizados sobre os últimos artigos.
» Subscrevam aqui a fedd RSS «
Obtenha mais informações sobre a fedd RSS aqui
Artigos que também lhe podem interessar:




Março 13th, 2008 às 10:47
Mais uma feature q dá muito jeito…
… Mas que só complica a reutilização de código e as boas práticas Object Oriented Programming, nomeadamente Design Patterns! :-S