2012-03-19 8 views
8
while (rdr.Read()) 
{ 
    Console.WriteLine("Product: {0,-35} Total: {1,2}", rdr["ProductName"], rdr["Total"]); 
} 

¿Qué significa {0, -35} en este código?¿Qué significan las llaves con cadenas de C#?

+0

No es aconsejable usar un código que no comprenda. ¿Dónde encontraste este código, sugiero, preguntándole al autor? –

Respuesta

7

Una línea más simple sería:

Console.WriteLine("{0}", 5); 

La función acepta cualquier número de argumentos. Se insertarán en la cadena en el índice correspondiente. En este caso, el índice cero contiene el número entero 5. El resultado es la cadena "5".

Ahora, tiene la opción de especificar una cadena de formato, así como un índice. De este modo:

Console.WriteLine("{0:0.00}", 5); 

Esto da formato a la 5 con 0.00, lo que resulta en 5.00.

Ese es el caso de los números, pero creo que son más fáciles de explicar. Para cadenas, el "formato" implica alineación. También tenga en cuenta que utiliza una coma en lugar de dos puntos para separar el índice y el formato.

alineación (opcional): Esto representa la longitud mínima de la cadena. Postive valores, el argumento de cadena se justificará a la derecha y si la cadena no es lo suficientemente larga, la cadena se rellenará con espacios en a la izquierda. Negativo valores, el argumento de cadena se justied left y si la cadena no es lo suficientemente larga, la cadena se rellena con espacios a la derecha. Si no se especificó este valor, por defecto a la longitud del argumento de cadena.

Así que en su ejemplo:

  • {0,-35} significa cadena tiene que ser al menos 35 caracteres, leftjustified (relleno de espacio en el extremo).
  • {1,2} significa que la cadena tiene que tener al menos 2 caracteres, justificados correctamente (relleno de espacio al frente).

Recomiendo this article, así como el string.Format documentation.

7

Esos soportes son marcadores de posición en cadenas de valores.

Por lo tanto, rdr["ProductName"] se formateará en los primeros corchetes de la cadena. Y rdr["Total"] se formateará en los segundos corchetes de la cadena.

Mientras esta:

rdr["ProductName"] = "My Product"; 
rdr["Total"] = 2.98; 

A continuación, dará salida a la consola:

producto: Mi producto total: 2,98

Después de la actualización pregunta:

El {0,-35} parte si para fines de alineación. Más información sobre formateo y alineación on C#'s official documentation.

+0

Gracias por su respuesta, pero ¿qué significa 0, -35 y 1,2 aquí? – rosebrit3

+0

Para cadenas, es información para la alineación. –

3

Es para Align cadena con espacios

Para alinear cadena a la derecha oa la izquierda uso String.Format método estático. Para alinear la cadena a la izquierda (espacios a la derecha) use patern de formato con coma (,) seguido de un número negativo de caracteres: String.Format ("{0, -10}", texto). Para alinear a la derecha use un número positivo: {0,10}.

echar un vistazo a

http://www.csharp-examples.net/align-string-with-spaces/

+0

-1 por favor jusify –

+0

Se ha actualizado ahora, no es -1 :) – rosebrit3

+0

Esto es solo la mitad de una respuesta, sin embargo. Sí, el ', -35' es para la alineación, pero ese no es el único propósito de los marcadores de posición de cadenas de formato. – Joey

2

Estos soportes se {} de formato de cadenas propósito. ejemplo, su caso rdr ["ProductName"] ha dado un especificador de formato {0, -35} ... que se alineará con el espacio acolchado a la derecha.

6

Las cadenas como "Product: {0,-35} Total: {1,2}" se llaman formato compuesto cadenas.

Los primeros números dentro de las llaves (que comienzan desde cero) se llaman elementos de formato y corresponden a la posición de los argumentos que vienen después de la cadena de formato compuesto. Estos números pueden ser seguidos opcionalmente por una coma (,) y un minimum width para aplicar.

El ancho mínimo es útil para alinear columnas. Si el valor es negativo, el resultado se alineará a la izquierda; de lo contrario, estará alineado a la derecha. Por ejemplo:

Console.WriteLine("Product: {0,-35} Total: {1,2}", "1stProduct", 99); 
Console.WriteLine("Product: {0,-35} Total: {1,2}", "SecondProduct", 111); 

Resultados en:

Product: 1stProduct       Total: 99 
Product: SecondProduct      Total: 111 

Se puede ver que ya hemos especificado un ancho mínimo de 35 caracteres de los nombres de productos, que siempre ocuparán al menos tanto espacio en la cadena de resultados independientemente de su longitud real (que fueron 10 y 13 en el ejemplo anterior, respectivamente). Y dado que hemos especificado -35 (negativo), los nombres de los productos se alinearán a la izquierda.

Cuestiones relacionadas