Использование заполнителя в StringBuilder

1

У меня есть что-то вроде этого:

int processed = 123;
//
....
builder.Append("Export: Processed {0} Teacher(s)", processed.ToString());

Но он не компилируется и говорит: "String is not assignable to char."

Что не так?

Теги:

4 ответа

3
Лучший ответ

Вам нужно использовать AppendFormat; также, вызов ToString на processed не требуется:

builder.AppendFormat("Export: Processed {0} Teacher(s)", processed);
7

Если вы хотите передать строку формата в свой StringBuilder вам нужно вызвать перегрузку AppendFormat проходящую в вашей строке форматирования. Также .ToString() не нужен, поскольку AppendFormat будет неявно вызывать .ToString() для каждого параметра. Поэтому ваше решение можно записать следующим образом:

StringBuilder builder = new StringBuilder();
int processed = 123;
builder.AppendFormat("Export: Processed {0} Teacher(s)", processed);

Из документации MSDN

Добавляет строку, возвращенную обработкой строки составного формата, которая содержит ноль или более элементов формата, к этому экземпляру. Каждый элемент формата заменяется строковым представлением соответствующего аргумента объекта. Этот член перегружен. Для получения полной информации об этом члене, включая синтаксис, использование и примеры, щелкните имя в списке перегрузки.

5

Нет перегрузки для StringBuilder.Append(string, string)

Вместо этого используйте StringBuilder.AppendFormat(string, object).

2

Использовать string.Format

 builder.Append(string.Format("Export: Processed {0} Teacher(s)", processed));
  • 1
    Хорошее и универсальное решение, хотя builder.AppendFormat является более очевидным выбором в этом случае. Но String.Format также будет работать в тех случаях, когда нет специальной * Форматной версии метода.
  • 0
    @GolezTrol верно. +1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню