Las Lambdas provienen del ámbito de la programación funcional y en C# se ha utilizado ampliamente de muchas maneras, desde funciones en línea hasta propiedades sólo en C# 6. Mostraré ambos usos en C# que harán que el programa no sólo se vea más genial, sino que también tenga un mejor factor de rendimiento; para ello les mostraré el IL de ese código de C# . Personalmente disfruto usando lambdas en muchas áreas, especialmente cuando tengo que escribir funciones en línea en C#. Desde que las propiedades getter-only pudieron ser escritas usando este concepto, las he estado usando y personalmente creo que es mejor que las formas anteriores de hacer lo mismo.
1. Uso de Lambdas para funciones en línea
Debería conocer a algunos de los conocidos delegados de la programación C#. Hay muchos campos en los que se utilizan, como en los casos de manejo de eventos en sus aplicaciones. Para el manejo de eventos, puedes escribir tus funciones actuales como las siguientes:
123456789101112// Sin lambdasmyBtn.Click += Btn_Click;publicvoidBtn_Click(object sender,EventArgs e){/// Código para manejar el evento}// Con la ayuda de lambdasmyBtn.Click +=(sender, e)={{{{/// Código para manejar el evento.}
csharp
Ten en cuenta que el compilador asignará automáticamente los objetos a sus tipos. Esto es conveniente en muchos sentidos, ya que permite escribir las funciones en línea en C# que permanecen sólo con los objetos, a menos que quieras usarlas en cualquier otro lugar también. Sin embargo, hay una desventaja en este método de manejo de los eventos: no se puede eliminar el manejador de eventos una vez que se ha adjuntado. En C# se puede -+ pero como no tenemos ninguna referencia para eliminar los eventos, sólo nos queda poder usar las funciones separadas. Pero , si no tienes que quitar los manejadores, siempre deberías considerar usar esta forma de manejar los eventos en tus programas.
2. Usando Lambdas para las propiedades de Getter-only
En C#, existe el concepto de usar propiedades en lugar de campos. Se controla cómo se establece un valor y cómo se captura un valor del campo. Considere esto como una alternativa (o similar) al getter y setters del lenguaje de programación Java. La única diferencia es que no tienes que escribirlos por separado en algún lugar, se escriben justo delante del propio campo. Los compiladores de programas en C# harían entonces sus propios campos de respaldo que se usan para almacenar los valores.
Básicamente, tendrías que escribir las propiedades de «getter-only» de esta manera:
1nombre de la cadena pública {get;}
csharp
Tenga en cuenta que estas propiedades son constantes, y no puede cambiarlas una vez que se establecen. Se fijaron en los constructores, o (a partir de C# 6) se fijan justo delante de él. Como esto:
1nombre de cuerda pública {get;}="Afzaal Ahmad Zeeshan";
csharp
Sin embargo, como ya sabemos que es un campo constante y no se puede modificar, ¿por qué no crear una simple propiedad constante? Aquí es donde las cosas se ponen un poco difíciles; incluso una propiedad tiene que ser respaldada por un campo. En cuyo caso, esto haría el truco por nosotros:
1publicstring Name ===; "Afzaal Ahmad Zeeshan";
csharp
Esto equivale a escribir lo siguiente:
1nombre de la cadena pública {get{return "Afzaal Ahmad Zeeshan";}}
csharp
Pero el rendimiento es mucho mejor, ya que el campo de sólo obtención se convierte en un campo constante y ese campo se utiliza en el programa cada vez que esta propiedad tiene que ser llamada.