Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

18 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 7 de noviembre de 2023
C#

El otro día me descubrí escribiendo un código parecido al siguiente:

return $"Order: {Items.Length} items, {Total.ToString("#,##0.#0")}";

Mal, lo que se dice mal, no estaba; funcionaba perfectamente y cumplía los requisitos, pero me di cuenta de que no estaba aprovechando todo el potencial de las cadenas interpoladas de C# que ya habíamos comentado por aquí mucho tiempo atrás.

Y como siempre que tengo algún despiste de este tipo, pienso que quizás pueda haber alguien más al que le ocurra o no esté al tanto de esta posibilidad el lenguaje, así que vamos a ver cómo podíamos haberlo implementado de forma algo más simple.

Normalmente, cuando usamos interpolación, todo lo que está entre llaves lo entendemos como una expresión C#, cuya conversión a string es lo que incluiremos finalmente en la cadena resultante.

Sin embargo, es bueno recordar que la interpolación permite una sintaxis más concisa para cubrir la (habitual) necesidad de tener que formatear el texto antes de incluirlo en la cadena.

El carácter ":" permite separar la expresión a evaluar del formato a aplicarle. Por tanto, la línea anterior podría haber quedado simplemente como:

return $"Order: {Items.Length} items, {Total:#,##0.#0}";

¡Mucho mejor así! El resultado en tiempo de ejecución será el mismo, pero el código es más corto y legible.

Por supuesto, podemos usar esta sintaxis con cualquier tipo de dato, y todos los formatos que usamos habitualmente en las sobrecargas de ToString() o llamadas a string.Format():

Console.Write($"Hoy es: {DateTime.Now:dd-MM-yyyy}");
Publicado en: www.variablenotfound.com.

Aún no hay comentarios, ¡sé el primero!