c# - valores - ¿Qué pasa con el signo de dólar($ "cadena")
valores string c# (2)
es un concepto que los lenguajes como Perl han tenido durante bastante tiempo, y ahora también obtendremos esta capacidad en C #. En la Interpolación de cadenas, simplemente anteponemos la cadena con un $ (al igual que usamos la @ para cadenas literales). Luego, simplemente rodeamos las expresiones que queremos interpolar con llaves (es decir, {y}):
Se parece mucho a los marcadores de posición String.Format (), pero en lugar de un índice, es la expresión en sí dentro de las llaves. De hecho, no debería sorprendernos que parezca String.Format () porque eso es realmente todo lo que es: azúcar sintáctico que el compilador trata como String.Format () detrás de escena.
Una gran parte es que el compilador ahora mantiene los marcadores de posición para que no tenga que preocuparse por indexar el argumento correcto porque simplemente lo coloca allí en la cadena.
Lea más sobre C # /. NET Little Wonders: interpolación de cadenas en C # 6
Esta pregunta ya tiene una respuesta aquí:
- ¿Qué significa $ antes de una cadena? 11 respuestas
He estado haciendo algunos ejercicios de C # en un libro, y me encontré con un ejemplo que me dejó perplejo. Directamente desde el libro, la línea de salida se muestra como:
Console.WriteLine($"/n/tYour result is {result}.");
Ahora, como si estuviera parado, el código funciona y el
double result
muestra como se esperaba.
Sin embargo, sin entender por qué el $ está allí al frente de la cadena, decidí eliminarlo, y ahora el código genera el nombre de la matriz
{result}
lugar del contenido.
El libro no explica por qué el $ está ahí, desafortunadamente.
He estado rastreando la ayuda de VB 2015 y Google, con respecto al formato de cadena y los métodos de sobrecarga Console.WriteLine. No veo nada que explique por qué es lo que es. Cualquier consejo sería apreciado.
Es la nueva característica en C # 6 llamada
Interpolated Strings
.
La forma más fácil de entenderlo es: una expresión de cadena interpolada crea una cadena al reemplazar las expresiones contenidas con las representaciones ToString de los resultados de las expresiones.
Para obtener más detalles sobre esto, eche un vistazo a MSDN .
Ahora, piense un poco más al respecto. ¿Por qué esta característica es genial?
Por ejemplo, tienes clase
Point
:
public class Point
{
public int X { get; set; }
public int Y { get; set; }
}
Crea 2 instancias:
var p1 = new Point { X = 5, Y = 10 };
var p2 = new Point {X = 7, Y = 3};
Ahora, desea enviarlo a la pantalla. Las 2 formas que usas habitualmente:
Console.WriteLine("The area of interest is bounded by (" + p1.X + "," + p1.Y + ") and (" + p2.X + "," + p2.Y + ")");
Como puede ver, la cadena de concatenación como esta hace que el código sea difícil de leer y propenso a errores.
Puede usar
string.Format()
para hacerlo más agradable:
Console.WriteLine(string.Format("The area of interest is bounded by({0},{1}) and ({2},{3})", p1.X, p1.Y, p2.X, p2.Y));
Esto crea un nuevo problema:
- Debe mantener el número de argumentos e indexarse.
Por esas razones, debemos usar una nueva función:
Console.WriteLine($"The area of interest is bounded by ({p1.X},{p1.Y}) and ({p2.X},{p2.Y})");
El compilador ahora mantiene los marcadores de posición para que no tenga que preocuparse por indexar el argumento correcto porque simplemente lo coloca allí mismo en la cadena.
Para la publicación completa, lea este blog .