Очистка текущей строки объекта StringBuilder

Возможный дубликат:
лучший способ очистить содержимое .NETs StringBuilder

Есть ли быстрый и простой способ избавиться от того, что в настоящее время хранится в StringBuilder?

Я искал метод Clear(), но не могу его найти. ;)

я бы сделал

stringBuilderObject = ""

Или что-то вдоль этих линий.


person bobber205    schedule 17.12.2009    source источник
comment
Дублировать stackoverflow.com /вопросы/1709471/   -  person John Lemp    schedule 17.12.2009
comment
@ Ваш комментарий в ответе JayZengs: я думаю, что с Length = 0 он, вероятно, будет повторно использовать память, которая была выделена ему ранее, поэтому проблем быть не должно. Чтобы проверить это, попробуйте использовать Length = 0, а затем проверьте емкость, она должна быть такой же, как и до того, как вы установили длину в ноль, что хорошо, если вы собираетесь создавать много строк одинакового размера.   -  person Tom Neyland    schedule 17.12.2009


Ответы (4)


Это сделает это

stringBuilderObject.Length = 0;
person Tom Neyland    schedule 17.12.2009
comment
Не знал об этом. Отличная работа. - person expedient; 17.12.2009
comment
О, я никогда не думал, что у Длины есть связующий. Хороший. - person Dathan; 17.12.2009

Это должно сработать ;)

myStringBuilder = new StringBuilder();
person womp    schedule 17.12.2009
comment
Необходимость перераспределения объекта построителя строк может быть такой же плохой, как и попытка использовать обычную строку с точки зрения производительности, в зависимости от того, как он используется и почему он очищается. - person Tom Neyland; 17.12.2009

person    schedule
comment
Это то, с чем я закончил, но я могу перейти к Length = 0. Хотя похоже, что у него могут быть проблемы с памятью? - person bobber205; 17.12.2009
comment
@bobber205: из msdn.microsoft.com/en- us/library/: текущий метод удаляет указанный диапазон символов из текущего экземпляра. [...] и строковое значение текущего экземпляра укорачивается по длине. Емкость текущего экземпляра не изменяется. Таким образом, на ваши проблемы с памятью не влияет выбор этого метода вместо StringBuilder.Length = 0; Если вас беспокоит память, вам также нужно установить StringBuilder.Capacity = some_small_number. - person Dathan; 17.12.2009

person    schedule
comment
Необходимость перераспределения объекта построителя строк может быть такой же плохой, как и попытка использовать обычную строку с точки зрения производительности, в зависимости от того, как он используется и почему он очищается. - person Tom Neyland; 17.12.2009
comment
Это тоже была моя первая мысль. Но как насчет (хотя, вероятно, необычного) случая, когда StringBuilder передается методу в качестве аргумента? Ваша версия не работает, тогда как stringBuilder.Remove(0, stringBuilder.Length) работает всегда. - person Dathan; 17.12.2009