Використання класу System.Text.StringBuilder

При роботі з рядками в C# необхідно враховувати те, що рядки є незмінними. Всі дії, направлені на зміну рядків, насправді не змінюють початковий її варіант. Вони лише повертають змінену копію рядка. Це можна побачити на наступному прикладі.

string s1 = "Приклад рядка";string s2 = s1.ToUpper(); Response.Write(s1);Response.Write("</br>");Response.Write(s2);

В даному випадку рядок s1 не зазнав ніяких змін. Метод ToUpper() створив копію рядка s1 і застосував до неї необхідні перетворення, тому на екран буде виведений як початковий рядок, так і рядок, що піддався зміні. Таке ж твердження справедливе і для звичайної операції конкатенації рядків. Результатом виконання операції конкатенації рядків є також новий рядок.

У ряді випадків слід уникати ситуацій, коли в результаті виконання операції створюється новий рядок, оскільки це неминуче пов'язано з додатковими накладними витратами пам'яті і інших ресурсів комп'ютера при виконанні операції. C# містить спеціальний клас StringBuilder, використовуючи який можна уникнути створення копій рядків при їх обробці. Всі зміни, що вносяться до об'єкту даного класу, негайно відображаються в нім, що у цілому ряді випадків набагато ефективніше, ніж робота з безліччю копій рядка.

Основною операцією, найчастіше використовуваною класом StringBuilder, є операція додавання до рядка вмісту. Для цього існує метод Append. Наступний код додає один рядок до іншої і виводить результат у вікно браузера. При цьому змінюється оригінал рядка, копія не створюється:

StringBuilder sb = new StringBuilder("Їхали ведмеді на велосипеді");sb.Append(", а за ними кіт задом наперед");Response.Write(sb);

Окрім додавання клас StringBuilder містить безліч інших методів, найбільш значущі з яких перерахованих нижче. Після того, як всі необхідні дії, пов'язані з обробкою рядка, були виконані, необхідно викликати метод ToString() для перекладу вмісту об'єкту в звичайний тип даних string.

Append Додавання заданого рядка в кінець рядка об'єкту.
AppendFormat Додавання заданого форматованого рядка (рядка, що містить символи, що управляють) в кінець рядка об'єкту.
CopyTo Копіювання символів заданого сегменту рядка в задані осередки масиву символів.
Insert Додавання рядка в задану позицію рядка об'єкту.
Remove Видалення заданої кількості символів з рядка об'єкту
Replace Заміна заданого символу або рядка об'єкту на інший заданий символ або рядок.

При інтенсивній роботі з рядками рекомендується використовувати клас StringBuilder, оскільки це дозволяє зменшити накладні витрати, пов'язані із створенням копії рядка при виконанні кожної операції.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: