Ребят, у меня возникли вопросы по строкам в c#.
По возможности ответьте с примерами. Заранее спасибо за ответ.
String - это строки. Они неизменяемые т.е. конкретную строку нельзя подправить/дописать/укоротить. Любые операции над строками приводят к созданию новой строки (с копированием всего текста). При этом старая строка уходит в мусор (если у вас не остается на нее ссылки).
Так сделано из соображений
Соответственно, при сборке большой строки из многих маленких эта особенность - неизменяемость строк - приводит к множественному копированию данных и к генерации большого количества мусора.
Для решения этой проблемы есть класс StringBuilder. Это не "строка", а класс для сборки строк из кусков, позволяющий в конце получить результирующую строку вызовом StringBuilder.ToString().
StringStringBuilderString не изменяемый тип. То есть если Вы создадите строку потом добавите ей несколько символов то это будет не старая модифицированная строка, а в памяти аллоцируется новый объект System.String, который будет содержать в себе новую строку. При этом старый объект продолжает существовать в куче пока не произойдет сборка мусора. Такой вот безобидный код:
string str = string.Empty;
for(int i = 0; i < 1000; ++i)
{
str += "a";
}
Создаст в памяти 1000 потенциальных кандидатов для GC.
При вызове метода например Append объекта StringBuilder будет изменятся уже существующая область памяти.
GC лишними операциями.System.String вполне достаточно. Если же вы заранее знаете что будете много изменять строку то класс StringBuilder упростить жизнь GC и CLR. Врятли это как то скажется на производительности, если у Вас не большая система и реально вы не почувствуете разницу. Но когда в проекте идет работа с миллионами строк то тогда StringBuilder не заменим (если конечно же Вы не напишете свой механизм работы со строками на неуправляемом коде или в unsafe-коде).Ответы на остальные вопросы очевидны.
Эта тема очень детально описана в книге "CRL via C#" Джеффри Рихтера.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости