English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Método anónimo de C#

Como su nombre indica, un método anónimo es un método sin nombre. Se puede definir un método anónimo en C# utilizando la palabra clave delegate y se puede asignar a una variable de tipo delegate.

En el método anónimo no es necesario especificar el tipo de retorno, se infiere a partir de la declaración del return dentro del cuerpo del método.

public delegate void Print(int value);
static void Main(string[] args)
{
    Print print = delegate(int val) { 
        Console.WriteLine("Dentro del método anónimo. Valor: {0}", val); 
    }
    print(100);
}
Salida:
Dentro del método anónimo. Valor:100

Método anónimo accede a variables definidas en una función externa

Un método anónimo puede acceder a variables definidas en una función externa.

public delegate void Print(int value);
static void Main(string[] args)
{
    int i = 10;
    
    Print prnt = delegate(int val) {
        val +=
        Console.WriteLine("Método anónimo: {0}", val); 
    }
    prnt(100);
}
Salida:
Método anónimo:110

Método anónimo como parámetro

También se puede pasar un método anónimo a un método que acepta un delegado como parámetro.

En el siguiente ejemplo, PrintHelperMethod() utiliza el primer parámetro de Print delegado:

public delegate void Print(int value);
class Program
{
    public static void PrintHelperMethod(Print printDel, int val)
    { 
        val += 10;
        printDel(val);
    }
    static void Main(string[] args)
    {
        PrintHelperMethod(delegate(int val) { Console.WriteLine("Método anónimo: {0}", val); }, 100);
    }
}
Salida:
Método anónimo:110

Se puede usar un método anónimo como manejador de eventos

saveButton.Click += delegate(Object o, EventArgs e)
{ 
    System.Windows.Forms.MessageBox.Show("Guardado con éxito!"); 
}

C#3La versión .0 introdujo expresiones lambda, que funcionan de manera similar a los métodos anónimos.

Limitaciones de los métodos anónimos

  • No puede contener instrucciones de salto, como goto, break o continue.

  • No puede acceder a parámetros ref o out de métodos externos.

  • No puede poseer ni acceder a código inseguro.

  • No se puede usar en el lado izquierdo del operador is.

 Puntos a recordar

  1. Se puede definir un método anónimo utilizando la palabra clave delegate

  2. Los métodos anónimos deben asignarse a delegados.

  3. Los métodos anónimos pueden acceder a variables o funciones externas.

  4. Los métodos anónimos pueden pasarse como parámetros.

  5. Los métodos anónimos pueden usarse como manipuladores de eventos.