Что означают фигурные скобки в строках C #? - PullRequest
9 голосов
/ 19 марта 2012
while (rdr.Read())
{
    Console.WriteLine("Product: {0,-35} Total: {1,2}", rdr["ProductName"], rdr["Total"]);
}

Что означает {0, -35} в этом коде?

Ответы [ 5 ]

8 голосов
/ 19 марта 2012

Более простая строка:

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

Функция принимает любое количество аргументов.Они будут вставлены в строку с соответствующим индексом.В этом случае в нулевом индексе содержится целое число 5. В результате получается строка «5».

Теперь у вас есть возможность указать строку формата, а также индекс.Вот так:

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

Это форматирует 5 с 0.00, что приводит к 5.00.

Это относится к числам, но я думаю, что их легче объяснить,Для строк «формат» подразумевает выравнивание.Также обратите внимание, что вы используете запятую, а не двоеточие для разделения индекса и формата.

выравнивание (необязательно): Это минимальная длина строки. Позитивные значения, строковый аргумент будет выровнен по правому краю, и если строка недостаточно длинна, строка будет дополнена пробелами слева. Отрицательные значения , строковый аргумент будет выровнен по левому краю, и если строка недостаточно длинна, строка будет дополнена пробелами справа.Если это значение не было указано, мы будем использовать длину строкового аргумента по умолчанию.

Итак, в вашем примере:

  • {0,-35} означает, что строка должна быть вне менее 35 символов, выравнивание по левому краю (пробел на конце).
  • {1,2} означает, что строка должна содержать не менее 2 символов, выравнивание по правому краю (пробел спереди).

Iрекомендуем эту статью , а также строку . Формат документации .

7 голосов
/ 19 марта 2012

Эти скобки являются заполнителями в строках для значений.

Таким образом, rdr["ProductName"] будет отформатирован в первые скобки строки.И rdr["Total"] будет отформатирован во вторых скобках строки.

При условии:

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

Затем вы выведете на консоль:

Продукт: Мой продукт Всего: 2,98

После обновления вопроса:

Часть {0,-35}, если используется для выравнивания.Подробнее о форматировании и выравнивании в официальной документации C # .

6 голосов
/ 19 марта 2012

Строки типа "Product: {0,-35} Total: {1,2}" называются составным форматом. Строки .

Первые числа внутри фигурных скобок (начинающиеся с нуля) называются элементами формата и соответствуют позиции аргументов, следующих за строкой составного формата. За этими номерами можно указать запятую (,) и minimum width для применения.

Минимальная ширина полезна для выравнивания столбцов. Если значение отрицательное, результат будет выровнен по левому краю; в противном случае он будет выровнен по правому краю. Например:

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

Результаты:

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

Вы можете видеть, что поскольку мы указали минимальную ширину 35 символов для названий продуктов, они всегда будут занимать не менее столько места в строке результата независимо от их фактической длины (которая были 10 и 13 в приведенном выше примере, соответственно). И поскольку мы указали -35 (отрицательный), названия продуктов будут выровнены по левому краю.

3 голосов
/ 19 марта 2012

это для выравнивания строки с пробелами

Для выравнивания строки вправо или влево используйте статический метод String.Format. Чтобы выровнять строку слева (пробелы справа), используйте форматирование патерна с запятой (,), за которой следует отрицательное число символов: String.Format («{0, –10}», текст). Для выравнивания по правому краю используйте положительное число: {0,10}.

взгляните на

http://www.csharp -examples.net / ALIGN-строка-с-пространств /

2 голосов
/ 19 марта 2012

Эти {} скобки предназначены для форматирования строк.Например, ваш случай rdr ["ProductName"] дал спецификатор формата {0, -35} ..., который будет выровнен по левому краю с пробелом справа.

...