Método anónimo en C#

Un método anónimo es un método que no contiene ningún nombre que se introduce en C# 2.0 . Es útil cuando el usuario quiere crear un método en línea y también quiere pasar parámetros en el método anónimo como otros métodos. Un método Anónimo se define usando la palabra clave delegado y el usuario puede asignar este método a una variable del tipo delegado.

Sintaxis:

delegate(parameter_list){
    // Code..
};

Ejemplo :

// C# program to illustrate how to 
// create an anonymous function
using System;
  
class GFG {
  
    public delegate void petanim(string pet);
  
    // Main method
    static public void Main()
    {
  
        // An anonymous method with one parameter
        petanim p = delegate(string mypet)
        {
            Console.WriteLine("My favorite pet is: {0}",
                                                 mypet);
        };
        p("Dog");
    }
}
Producción:

My favorite pet is: Dog

Puntos importantes:

  • Este método también se conoce como delegado en línea .
  • Con este método, puede crear un objeto delegado sin escribir métodos separados.
  • Este método puede acceder a la variable presente en el método externo. Este tipo de variables se conocen como variables externas . Como se muestra en el siguiente ejemplo, fav es la variable externa.

    Ejemplo:

    // C# program to illustrate how an 
    // anonymous function access variable
    // defined in outer method
    using System;
      
    class GFG {
      
        // Create a delegate
        public delegate void petanim(string pet);
      
        // Main method
        static public void Main()
        {
      
            string fav = "Rabbit";
      
            // Anonymous method with one parameter
            petanim p = delegate(string mypet)
            {
                Console.WriteLine("My favorite pet is {0}.",
                                                     mypet);
      
                // Accessing variable defined
                // outside the anonymous function
                Console.WriteLine("And I like {0} also.", fav);
            };
            p("Dog");
        }
    }
    Producción:

    My favorite pet is Dog.
    And I like Rabbit also.
    
  • Puede pasar este método a otro método que acepte delegado como parámetro. Como se muestra en el siguiente ejemplo:

    Ejemplo :

    // C# program to illustrate how an 
    // anonymous method passed as a parameter
    using System;
      
    public delegate void Show(string x);
      
    class GFG {
      
        // identity method with two parameters
        public static void identity(Show mypet, 
                                  string color)
        {
            color = " Black" + color;
            mypet(color);
        }
      
        // Main method
        static public void Main()
        {
      
            // Here anonymous method pass as 
            // a parameter in identity method
            identity(delegate(string color) { 
               Console.WriteLine("The color"+
               " of my dog is {0}", color); },
                                     "White");
        }
    }
    Producción:

    The color of my dog is  BlackWhite
    
  • En los métodos anónimos, puede eliminar la lista de parámetros, lo que significa que puede convertir un método anónimo en un delegado.
  • El bloque de método anónimo significa el alcance de los parámetros en el método anónimo.
  • Un método anónimo no contiene sentencias de salto como goto, break o continue.
  • Un método anónimo no accede al código no seguro.
  • Un método anónimo no accede a los parámetros de entrada, referencia y salida del ámbito externo.
  • No puede usar un método anónimo al lado izquierdo del operador is.
  • También puede utilizar un método anónimo como controlador de eventos.

    Ejemplo:

    // C# program to illustrate how an 
    // anonymous method use as a 
    // event handler
    MyButton.Click += delegate(Object obj, EventArgs ev)
    {
        System.Windows.Forms.MessageBox.Show("Complete without error...!!");
    }

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *