Cadenas interpoladas en CSharp

Csharp (C#) tiene predefinido identificadores especiales que modifican el elemento al que este preceden, como una cadena, un identificador o al nombre de un atributo.

En Csharp 6 se introdujo el identificador especial “$” que marca una cadena como interpolada, es decir que puede contener expresiones propias del lenguaje. En otras palabras, es una forma de inyectar valores en una cadena.

Veamos un ejemplo con una cadena formateada y otra interpolada para así ver sus diferencias:

Aunque se produce un mismo resultado, como se puede apreciar, es más fácil de leer y escribir una cadena interpolada, sin mencionar que se escribe menos código.

Caracteres especiales

Para insertar caractecteres especiales como las comillas dobles » o el backslash \ la forma más elegante de hacerlo es utilizando el identificador verbatim «@» justo después del identificador de cadena interpolada “$”, como vemos en el siguiente ejemplo:

Otra manera de hacerlo es utilizando el propio backslash «\» como caracter de escape, veamos:

En el caso de que queramos mostrar llaves “{” o “}” será necesario colocarlas doblemente, de la siguiente manera:

Aquí puedes ver más secuencias de escape de cadena.

Formatos

También es posible aplicar formatos a una cadena en una expresión interpolada. Veamos varios ejemplos:

También es posible aplicar formatos a una cadena en una expresión interpolada. Veamos varios ejemplos:

Puedes ver como aplicar formato a tipos en .NET.

Operadores condicionales

En una cadena interpolada podemos usar el operador condicional ternario “?:” para tomar una decisión como vemos en el ejemplo:

Podemos ver que debemos encerrar entre parentecis la parte condicional de la expresión lógica para que esta funcione.

Puedes aprender más del operador ternario haciendo clic aquí.

Conslusión

La interpolación de cadenas es una forma muy fácil y precisa de inyectar valores variables en una cadena, así como de escribir, leer y entender, podemos adecuarlas a formatos específicos y usar condiciones en ella.