Blogger news

18:54
0
En esta segunda entrega, veremos los ámbitos y los argumentos dentro de los métodos anónimos.

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