Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Операції над рядками






Тема 16. Клас StringBuilder – будівничий рядків

 

Клас string не дозволяє змінювати існуючі об'єкти. Стрінговий клас StringBuilder дозволяє компенсувати цей недолік. Цей клас належить до змінюваних класів і його можна знайти в просторі імен System.Text. Розглянемо клас StringBuilder докладніше.

Оголошення рядків. Конструктори класу StringBuilder

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

· public StringBuilder (string str, int cap). Параметр str задає рядок ініціалізації, cap - ємність об'єкта;

· public StringBuilder (int curcap, int maxcap). Параметри curcap й maxcap задають початкову й максимальну ємність об'єкта;

· public StringBuilder (string str, int start, int len, int cap). Параметри str, start, len задають рядок ініціалізації, cap - ємність об'єкта.

Операції над рядками

Над рядками цього класу визначені практично ті ж операції з тією же семантикою, що й над рядками класу String:

· присвоювання (=);

· дві операції перевірки еквівалентності (==) і (! =);

· узяття індексу ([]).

Операція конкатенації (+) не визначена над рядками класу StringBuilder, її роль грає метод Append, що дописує новий рядок у хвіст уже існуючої.

З рядком цього класу можна працювати як з масивом, але, на відміну від класу String, тут уже все робиться як треба: допускається не тільки читання окремого символу, але і його зміна. Розглянемо з невеликими модифікаціями наш старий приклад:

public void TestStringBuilder(){ //Рядка класу StringBuilder //операції над рядками StringBuilder s1 =new StringBuilder(" ABC"), s2 =new StringBuilder(" CDE"); StringBuilder s3 = new StringBuilder(); //s3= s1+s2; s3= s1.Append(s2); bool b1 = (s1==s3); char ch1 = s1[0], ch2=s2[0]; Console.WriteLine(" s1={0}, s2={1}, b1={2}, " + " ch1={3}, ch2={4}", s1, s2, b1, ch1, ch2); s2 = s1; b1 = (s1! =s2); ch2 = s2[0]; Console.WriteLine(" s1={0}, s2={1}, b1={2}, " + " ch1={3}, ch2={4}", s1, s2, b1, ch1, ch2); StringBuilder s = new StringBuilder(" Zenon"); s[0]='L'; Console.WriteLine(s); }//TestStringBuilder

Цей приклад демонструє можливість виконання над рядками класу StringBuilder тих же операцій, що й над рядками класу String. У результаті присвоювання створюється додаткове посилання на об'єкт, операції перевірки на еквівалентність працюють зі значеннями рядків, а не з посиланнями на них. Конкатенацію можна замінити викликом методу Append. З'являється нова можливість - змінювати окремі символи рядка. (Для того щоб ім'я класу StringBuilder стало доступним, у проект додана пропозиція using System.Text, що посилається на відповідний простір імен.)






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.