Recordando que se llaman métodos anónimos por que no tienen nombre y no es posible referenciarlos desde ninguna parte del código, la única forma de acceder a ellos es a través de la instancia del delegado.
Ámbitos
Los métodos anónimos tienen acceso compartido al estado local de las funciones miembros que los contiene, por ejemplo, si una variable comparte el ámbito con un método anónimo, éste podrá acceder al valor de la variable.
Ejemplo:
using System;
namespace ConMetodosAnonimos
{
class Program
{
//declaracion del delegado
delegate void z_delTipoDelegado();
//Este metodo devuelve una instancia del delegado
//no es necesario un metodo ya que el metodo esta
//dentro del delegado
static z_delTipoDelegado get()
{
return delegate()
{
int z_varointNumero = 10;
Console.WriteLine("El valor de la variable es {0}", z_varointNumero);
};
}
static void Main(string[] args)
{
//instancia del delegado
z_delTipoDelegado z_varcioDelegado = get();
//al llamar a ka instancia del delegado, se ejecutara
//el metodo anonimo declarado dentro de la instancia
//del mismo
z_varcioDelegado();
}
}
}
Como se puede ver la variable varointNumero comparte el ámbito con el método anónimo, por lo tanto, éste puede acceder al valor de la variable.
Argumentos
Los métodos anónimos pueden aceptar argumentos, vamos a ver como:
using System;
namespace Argumentos
{
class Program
{
//declaracion del delegado con argumentos
delegate int z_delTipoDelegado(int z_parintNumero, string z_parstrTexto);
//Este metodo devuelve una instancia del delegado
static z_delTipoDelegado get()
{
return delegate(int x, string y)
{
Console.WriteLine("Numero: {0}, Texto: {1}", x, y);
return 1;
};
}
static void Main(string[] args)
{
//instancia del delegado
z_delTipoDelegado z_varcioDelegado = get();
int z_varointEntero = 15;
string z_varostrCadena = "Hola mundo por un parametro";
Console.WriteLine("El delegado responde: {0}", z_varcioDelegado(z_varointEntero, z_varostrCadena));
}
}
}
Para los que se perdieron la primera parte: Parte I
Ailas..............
0 comentarios:
Publicar un comentario