Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

Глава 8. Строки – объекты класса string

8.1. Строковые литералы

Для представления текстовой информации в C# используются объекты класса

string. Класс string "класс: string" представляет собой один из предопределённых

типов языка C#. В .Net Framework этому типу соответствует класс System.String.

Один из видов объектов класса string мы уже многократно применяли – это

строковые константы или строковые литералы.

Строковая константа или строковый литерал имеет две формы – обычный

(регулярный) строковый литерал (regular-string-literal) и буквальный строковый

литерал

"литерал:строковый литерал"

(verbatim-string-literal). До сих пор мы

использовали только обычную (регулярную) форму, традиционную для языков

программирования. Регулярный строковый литерал – это последовательность

символов и эскейп-последовательностей, заключенная в кавычки (не в апострофы).

В регулярных строковых константах для представления специальных символов

используются

те

же

эскейп-последовательности,

которые

применяются

в

константах

типа

char .

Обрабатывая

регулярный

строковый

литерал

"литерал:регулярный строковый литерал" , компилятор из его символов формирует

строковый

объект

и

при

этом

заменяет

эскейп - последовательности

соответствующими кодами (символов или управляющих кодов). Таким образом,

литералу

"\u004F\x4E\u0045\ttwo"

будет соответствовать строка, при выводе которой на экране текст появится в

таком виде:

ONE

two

Здесь \u004F – юникод символа `О`, \x4E – шестнадцатеричный код символа

`N`, \u0045 – юникод символа `E`, \t - эскейп-последовательность, представляющая

код табуляции

.

Буквальный строковый литерал начинается с префикса @, за которым в

кавычках размещается возможно пустая последовательность символов. Символы

такого литерала воспринимаются буквально, то есть в такой строке

не

обрабатываются эскейп-последовательности

"эскейп-последовательность" , а

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

В результате выполнения оператора:

Console.WriteLine(@"\u004F\x4E\u0045\ttwo");

на экране появится

\u004F\x4E\u0045\ttwo

Если в буквальном литерале необходимо поместить кавычку, то она

изображается двумя рядом стоящими кавычками.

Важно отметить, что буквальный литерал может быть размещён в коде

программы на нескольких строках и это размещение сохраняется при его выводе. В

тоже

время

попытка

перехода

на

новую

строку

с

помощью

эскейп-

последовательности \n в буквальном литерале будет безуспешной.

8.2. Строковые объекты и ссылки типа string

Каждый строковый литерал — это объект класса string. Класс string является

типом ссылок. Кроме литералов можно определить объекты класса string с

использованием конструкторов. (Конструктор

"конструктор"

– специальный

метод класса, предназначенный для инициализации объекта класса в процессе его

создания.) Конструкторы класса string позволяют инициализировать объекты-

строки несколькими способами.

Наиболее простая форма создания строки-объекта – применение строкового

литерала

в

качестве

инициализирующего

выражения

"выражение:инициализирующее выражение" . Пример:

string line1="Это строка 1"

;

После выполнения этого объявления создаётся ссылка line1 типа string, и она

ассоциируется со строковым литералом, который является объектом класса string.

Строковый объект можно создавать, используя массив символов:

char [ ] car ={'M', 'a', 'c', 'c', 'u', 'в'};

string line2 = new string (car);

В данном примере определён символьный массив. Представляющая его ссылка

car используется в качестве аргумента при обращении к конструктору класса string.

Значением создаваемого объекта будет строка "Массив". Чтобы получить строку,

содержащую один символ, используется конструктор с первым параметром типа

char и вторым параметром, равным 1.

Пример: string line3 = new string (‘W’,1);

line3 представляет строку "W".

Если нужна строка, содержащая последовательность одинаковых символов, то

применяется конструктор с двумя параметрами. Первый из них определяет нужный

символ, а второй – число его повторений.

Пример: string line4 = new string ('7',3);

В данном случае line4 это ссылка на строку "777".

Второй параметр может быть любым целочисленным выражением, поэтому

этот конструктор удобно применять в тех случаях, когда количество повторений

символа заранее неизвестно, то есть зависит от каких-то изменяемых при

выполнении программы данных.

Обратите внимание, что среди конструкторов класса string нет конструктора с

параметром типа string.

Строковые объекты, как создаваемые с применением конструкторов, так и

формируемые для представления строковых литералов, компилятор размещает в

куче. Ссылки на строки размещаются в стеке. Размер строки при определении

строкового объекта явно не указывается, он определяется автоматически при

инициализации. Ни размер строки, ни её содержимое не могут изменяться после

создания строки!!!

Если инициализация при объявлении строковой ссылки отсутствует, то ей

присваивается значение null, и ее нельзя использовать в выражениях до

присваивания ей конкретного значения. Пример ошибки:

string line;

line += "asdfg"; // ошибка компиляции

Кроме явного задания строковых литералов и применения конструкторов для

создания строковых объектов используют метод ToString() "метод: ToString()" .

Этот метод определён для всех встроенных типов. Например, значением выражения

Соседние файлы в папке CSBasicCourse2ndedPodbelsky