Hey dev, si quieres ser un desarrollador de fuste, entonces debes conocer muy bien las características del lenguaje así que en esta ocasión te enseñaré una característica llamada Expression-bodied members (miembros con cuerpo de expresión) son una característica del lenguaje C# que permite escribir métodos, propiedades y otros miembros de clase de forma más concisa utilizando el operador => y que están disponibles desde la versión C# 6 y 7.
Si quieres aprender más del lenguaje C# y sus cambios versión por versión aquí es el lugar.
¿Qué son los Expression-bodied Members?
Los expression-bodied members te permiten escribir métodos o propiedades cuyo cuerpo consiste en una sola expresión. En lugar de usar las llaves {} y la instrucción return, puedes utilizar una sintaxis simplificada con el operador flecha (=>).
Esta característica hace el código más legible y compacto, especialmente para miembros que ejecutan una única acción o devuelven un valor simple.
Puedes revisar la documentación oficial de Microsoft aquí.
A continuaión te mostraré 5 ejemplos de expression-bodied members, comparados con su versión clásica usando llaves {} y return, cuando aplica. Esto te permitirá ver con claridad cómo se simplifica el código con esta característica de C#. Empecemos! 🔥
Método con cuerpo de expresión
La versión tradicional digamos sería:
public int Sumar(int a, int b)
{
return a + b;
}
La versión con expression-bodied es:
public int Sumar(int a, int b) => a + b;
Propiedad de solo lectura
Y esta la que siempre se ha usado:
public string NombreCompleto
{
get
{
return $"{Nombre} {Apellido}";
}
}
Esta es la versión que usa expression-body:
public string NombreCompleto => $"{Nombre} {Apellido}";
Constructor
Tradicionalmente cómo se hace? así...
public Persona(string nombre)
{
Nombre = nombre;
}
Y la versión con expresión es así:
public Persona(string nombre) => Nombre = nombre;
Propiedad con set
Una propiedad normalmente se hace esto:
private int _edad;
public int Edad
{
get
{
return _edad;
}
set
{
_edad = value;
}
}
Con expression quedaría así:
private int _edad;
public int Edad
{
get => _edad;
set => _edad = value;
}
Indexador
Con la versión clásica:
private int[] datos = new int[5];
public int this[int index]
{
get
{
return datos[index];
}
}
De la manera nueva:
private int[] datos = new int[5];
public int this[int index] => datos[index];
También se puede usar en destructores o finalizadores pero son mucho menos conocidos y utilizados por eso no puse ejemplos de eso aquí, pero es importante que lo sepas 😉
Ventajas y recomendaciones
- Código más limpio y corto.
- Ideal para operaciones simples.
- Fácil de leer en clases DTO, entidades o controladores.
- No es recomendable para lógica compleja: si necesitas múltiples líneas o validaciones, usa el cuerpo completo.
- Sólo puedes usarlo cuando el cuerpo es una única expresión válida.
Si esta entrada te ha gustado, entonces ya sabes qué hacer dev, compártela! 👌🏼
Créditos de imagen de portada: Basado en Foto de Rachel Hisko en Unsplash
