¿Qué significa {0} cuando se encuentra en una cadena en C #?

85

En un diccionario como este:

Dictionary<string, string> openWith = new Dictionary<string, string>();

openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");

Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);

La salida es:

Para Key = "rtf" value = wordpad.exe

¿Qué {0}significa?

Ricardo
fuente

Respuestas:

180

Está imprimiendo una cadena formateada. {0} significa insertar el primer parámetro después de la cadena de formato; en este caso el valor asociado a la clave "rtf".

Para String.Format, que es similar, si tuviera algo como

//            Format string                    {0}           {1}
String.Format("This {0}.  The value is {1}.",  "is a test",  42 ) 

crearía una cadena "Esto es una prueba . El valor es 42 ".

También puede usar expresiones e imprimir valores varias veces:

//            Format string              {0} {1}  {2}
String.Format("Fib: {0}, {0}, {1}, {2}", 1,  1+1, 1+2) 

produciendo "Fib: 1 , 1 , 2 , 3 "

Vea más en http://msdn.microsoft.com/en-us/library/txafckwd.aspx , que habla sobre el formato compuesto.

Daniel LeCheminant
fuente
25

Es un marcador de posición en la cadena.

Por ejemplo,

string b = "world.";

Console.WriteLine("Hello {0}", b);

produciría esta salida:

Hello world.

Además, puede tener tantos marcadores de posición como desee. Esto también funciona en String.Format:

string b = "world.";
string a = String.Format("Hello {0}", b);

Console.WriteLine(a);

Y aún obtendría el mismo resultado.

Steven DeWitt
fuente
11

Además del valor que desea imprimir {0} {1}, etc., puede especificar un formato. Por ejemplo, {0,4}será un valor que se rellenará con cuatro espacios.

Hay una serie de especificadores de formato integrados y, además, puede crear los suyos propios. Para obtener un tutorial / lista decente, consulte Formato de cadena en C # . Además, hay preguntas frecuentes aquí .

Muad'Dib
fuente
6

Para referencia futura, en Visual Studio puede intentar colocar el cursor en el nombre del método (por ejemplo, WriteLine) y presionar F1para obtener ayuda sobre ese contexto. Investigar debería encontrarle String.Format()en este caso, con mucha información útil.

Tenga en cuenta que resaltar una selección (por ejemplo, hacer doble clic o hacer una selección de arrastre) y presionar F1solo hace una búsqueda de cadena sin contexto (que tiende a apestar para encontrar algo útil), así que asegúrese de colocar el cursor en cualquier lugar dentro la palabra sin resaltarla.

Esto también es útil para la documentación sobre clases y otros tipos.

Rob Parker
fuente
5

Es un marcador de posición para el primer parámetro, que en su caso se evalúa como "wordpad.exe".

Si tuviera un parámetro adicional, usaría {1}, etc.

Bravax
fuente
4

Es un marcador de posición para un parámetro muy parecido al que %sactúa dentro del especificador de formato printf.

Puede comenzar a agregar cosas adicionales allí para determinar el formato también, aunque eso tiene más sentido con una variable numérica ( ejemplos aquí ).

Estera
fuente
0

Esto es lo que llamamos formato compuesto de .NET Framework para convertir el valor de un objeto en su representación de texto e incrustar esa representación en una cadena. La cadena resultante se escribe en el flujo de salida.

El método Console.WriteLine sobrecargado (cadena, objeto) Escribe la representación de texto del objeto especificado, seguida del terminador de línea actual, en el flujo de salida estándar utilizando la información de formato especificada.

sujith karivelil
fuente