Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИДПО_ИИИС / Лекция 6.docx
Скачиваний:
52
Добавлен:
19.05.2015
Размер:
126.8 Кб
Скачать

Управляющие последовательности и вывод служебных символов

В C# строки могут содержать любое количество управляющих последовательностей ( escape characters - управляющих символов), на которые реагируют средства вывода строк.

Таблица 20.11 . Управляющие последовательности

Управляющий символ

Назначение

@

Префикс дословного вывода строк ( verbatim strings ). Ставится перед формируемой строкой и отменяет срабатывание всех управляющих символов

\'

Вставить одинарную кавычку

\"

Вставить двойную кавычку

\\

Вставить обратный слэш

{{

Вставить фигурную открывающую скобку

}}

Вставить фигурную закрывающую скобку

\a

Запустить системное звуковое оповещение ( Alert )

\b

Вернуться на одну позицию ( Backspace )

\f

Начать следующую страницу ( Form feed )

\n

Вставить новую строку ( New line )

\r

Вставить возврат каретки ( carriage Return )

\t

Вставить горизонатльный символ табуляции ( horizontal Tab )

\u

Вставить символ Unicode

\v

Вставить вертикальный символ табуляции ( Vertical tab )

\o

Представляет нулевой символ NULL (все биты представления нулевые)

using System;

namespace Test

{

class Test

{

static void Main()

{

// Форматирование без параметров + Звукнем

string str = String.Format("\aЯ передаю \"

Привет всем!\" {{Снетков}}\n");

Console.WriteLine(str);

while(true);

}

}

}

Листинг 20.44 . Пример с управляющими символами строк

Результат выполнения примера

Я передаю "Привет всем!" {Снетков}

Применение класса System.Text.StringBuilder

При работе со строками в C# первоначальное значение строки не может быть изменено. Мы применяем к строкам множество модифицирующих методов и получаем нужный результат, но на самом деле методы каждое изменение строки записывают на новом месте в куче, а не используют одну и ту же область памяти. Ссылки на старые места хранения строк безжалостно бросаются, а методы возвращают лишь копии измененного содержимого, размещенного на новом месте. Брошенные ссылки подберет позже сборщик мусора, когда будет отдавать системе уже неадресуемые места памяти.

Когда потребуется не создавать лишние копии строк (особенно для больших объемов данных), а обрабатывать строки напрямую в месте их хранения, можно воспользоваться классом StringBuilder в пространстве имен System.Text.

Создание объекта класса StringBuilder осуществляется при помощи одного из многих его перегруженных конструкторов. Параметры конструкторов позволяют задавать значения четырех свойств, приведенных в таблице.

Таблица 20.12 . Свойства, задаваемые через параметры конструкторов StringBuilder при создании объекта

Свойство

Назначение

Capacity (емкость)

Свойство определяет исходный размер элемента символьного массива в экземпляре класса StringBuilder. По умолчанию принято значение 16. Если существующий размер меньше, чем необходимо для такой операции как добавление, то объект класса StringBuilder удваивает размер символьного массива. Поскольку такие операции снижают производительность, рекомендуется заранее задавать необходимый размер, если он известен на момент создания объекта класса StringBuilder.

Length (длина)

Длина строки в данном экземпляре объекта класса StringBuilder.

MaxCapacity (максимальная емкость)

Свойство задает максимальное количество символов, которое может содержать текущий экземпляр класса StringBuilder. По умолчанию принято значение Int32.MaxValue. Свойство StringBuilder.MaxCapacity уже созданного объекта не может быть изменено.

Chars (символы)

Это индексируемое свойство внутреннего символьного массива, входящего в объект StringBuilder. Индексы этого свойства начинаются с нуля.

Таблица 13 . Методы класса StringBuilder

Метод

Назначение

Append()

Добавляет строковое ( System.String ) представление указанного объекта к содержимому экземпляра класса StringBuilder

AppendFormat()

Подобен методу Append(), подразумевает применение спецификаторов форматирования и национальных особенностей.

EnsureCapacity()

Гарантирует определенную емкость символьного массива.

Equals()

Сранивает два экземпляра класса StringBuilder на совпадение значений всех свойств и содержимого символьного массива.

Insert()

Вставляет строковое представление указанного объекта в определенную позицию символьного массива экземпляра StringBuilder

Remove()

Удаляет определенный диапазон символов.

Replace()

Заменяет в объекте указанные вхождения строк на другие

ToString()

Преобразует допускающий изменения экземпляр класса System.Text.StringBuilder в неизменный экземпляр класса System.String

using System; // Для класса String

using System.Text; // Для класса StringBuilder

namespace Test

{

class Test

{

static void Main()

{

String strFixed = new String(

"Эта исходная строка не меняется".ToCharArray());

String strUpper = strFixed.ToUpper();

Console.WriteLine(strFixed);

Console.WriteLine(strUpper);// Новая копия

int capacity = 100; // Исходный размер

StringBuilder myBuffer = new StringBuilder(

"\nИсходная строка", capacity);

myBuffer.Append("+Добавленная строка");

Console.WriteLine(myBuffer);// Та же строка

Console.ReadLine();

}

}

}

Листинг 15 . Применение класса StringBuilder

Результат выполнения примера

Эта исходная строка не меняется

ЭТА ИСХОДНАЯ СТРОКА НЕ МЕНЯЕТСЯ

Исходная строка+Добавленная строка

Перечисления в C#

using System;

namespace Test

{

enum EmpType

{

Manager,

Grunt,

Contractor,

VP

}

class Test

{

void Variant(EmpType en)

{

switch(en)

{

case EmpType.Contractor:

Console.WriteLine("Работает по контракту");

break;

case EmpType.Grunt:

Console.WriteLine("");

break;

case EmpType.Manager:

Console.WriteLine("");

break;

case EmpType.VP:

Console.WriteLine("");

break;

default:

Console.WriteLine("");

break;

}

}

static void Main()

{

Console.ReadLine();

}

}

}

Соседние файлы в папке ИДПО_ИИИС