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

242.ToString()

будет строковый объект, содержащий изображение символов целого числа "242".

После выполнения операторов

bool b = 5>4;

strng sb = b.ToString();

значением sb будет строка "True"

8.3. Операции над строками

Строки языка C# предназначены для хранения последовательностей символов,

для каждого из которых отводится 2 байта, и они хранятся в кодировке Unicode (как

данные типа char). В некотором смысле строка подобна одномерному массиву с

элементами типа char. Элементы (символы строки) последовательно нумеруются,

начиная с 0. Последний символ имеет номер на 1 меньше длины строки.

Для

строковых

объектов

определена

операция

индексирования

"операции:операция индексирования" :

строка[индексирующее_выражение]

строка – это ссылка на объект класса string или строковая константа;

индексирующее_выражение – должно быть целочисленным и не может быть

меньше нуля

.

Результат выражения с операцией индексирования – символ (значение типа

char), размещённый в той позиции строки, номер которой соответствует

индексному выражению. Если значение индекса меньше нуля, а также больше или

равно

длине

строки,

возникает

исключительная

ситуация

(генерируется

исключение).

Выражение

"выражение: праводопустимое"

с операцией индексирования,

применённое к строке, только праводопустимое. С его помощью запрещено

(невозможно) изменить соответствующий элемент строки.

В качестве примера рассмотрим выражение, формирующее символьное

представление шестнадцатеричной цифры по её десятичному значению в диапазоне

от 0 до 15:

"0123456789ABCDEF"[ind]

Если ind ==13, то значением выражения будет 'D'.

Операция присваивания (=) для строк

"операции: присваивания (=) для

строк"

выполняется не так как, например, для массивов. Когда ссылке с типом

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

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

нескольких ссылок.

Операция присваивания для строк приводит к созданию нового экземпляра той

строки, на которую ссылается выражение справа от знака операции =. Ранее

существовавшая строка никак не ассоциируется с новой ссылкой.

Сказанное

иллюстрирует

рис.

8.1,

на

котором

приведена

схема,

соответствующая следующим объявлениям:

char [ ] aCh = {'Б','и','т'};

char[ ] bCh = aCh;

string aSt = "Байт";

string bSt = aSt;

стек

куча

aCh

Б

и

т

Рис. 8.1. Присваивания для ссылок на массивы и строки

Рис. 8.1. Присваивания для ссылок на массивы и на строки

Операции сравнения на равенство "операция: сравнения на равенство" == и

неравенство !=, применяемые к строкам, сравнивают последовательности символов

в строках. (Отметим, что для массивов сравниваются значения ссылок.)

Значением выражения aSt==bSt будет true.

Конкатенацию строк

"конкатенация:конкатенация строк"

выполняет

операция +. Например, после приведённого определения ссылки aSt выражение

aSt+" состоит из 8 бит"

приведёт к формированию строки "Байт состоит из 8 бит". Операция + перегружена

и обеспечивает конкатенацию не только двух строк, а также строки и операнда

другого типа, значение которого автоматически приводится к типу string.

Например, выражение

aSt+" содержит "+8+" бит"

формирует строку "Байт содержит 8 бит".

Однако значением выражения

aSt+" содержит "+8+aCh

будет строка "Байт содержит 8 System.Char[ ]".

В этом случае ссылка на массив aCh приводится к обозначению типа

bCh

aSt

Б

а

й

т

bSt

Б

а

й

т

символьного

массива.

(Значением

выражения

aCh.ToString(

)

является

“System.Char[ ]”.)

Операция + как конкатенация имеет тот же ранг, что и операция +,

обозначающая сложение арифметических данных. Поэтому значением выражения

aSt+" содержит "+4+4+" бит"

будет строка "Байт содержит 44 бит".

По-видимому, это не то, что ожидали. Но ведь операции одного ранга

выполняются слева направо.

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