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

8.11. Неизменяемость объектов класса String

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

для представления строки-литерала, или объект, созданный с помощью обращения к

конструктору класса string, можно обращаться только для получения их значений.

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

е

с операцией индексирования [ ].

Чтобы "изменить" строку

"изменение строки" , приходится прибегать к

"обходным маневрам". Например, можно переписать символы строки во

вспомогательный массив с элементами типа char. Элементы такого массива

доступны изменениям. Выполнив нужные преобразования, создадим на основе

изменённого массива новую строку, используя конструктор string (char[ ]). Если

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

полученный объект. Схема преобразованний показана на рис.8.2.

Рис. 8.2. Как изменить объект типа string

Последовательность операторов, соответствующая описанной схеме:

string row = "0123456789";

char[] rev;

rev = row.ToCharArray();

Array.Reverse(rev);

row = new string(rev);

Console.WriteLine(row);

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

9876543210

В

примере

определена

ссылка

row

на

объект

класса

string ,

инициализированный

строковым

литералом

"0123456789".

Определена

бе

з

инициализации ссылка rev на символьный массив. Затем к объекту, связанному со

ссылкой row, применён метод ToCharArray(), и результат присвоен ссылке rev.

Метод Reverse() класса Array меняет на обратный порядок размещения значений

элементов массива, связанного со ссылкой rev, использованной в качестве

аргумента. Из изменённого массива, адресованного ссылкой rev, конструктор

string( ) создаёт новую строку, ссылка на которую присваивается переменной row.

Тем самым разрывается связь ссылки row со строкой "0123456789", и row

связывается с объектом, содержащим последовательность "9876543210".

Контрольные вопросы

Объясните различия между регулярным и буквальным строковыми литералами.

Каким образом в буквальный строковый литерал поместить символ кавычки?

Перечислите способы создания объектов типа string.

Перечислите операции над строками.

В чём особенность операции индексирования для строк?

В чём отличия и в чём сходство строк и массивов типа char[ ]?

Как выполняется операция присваивания для строк?

Какие операции сравнения применимы к строкам?

Перечислите особенности конкатенации строк со значениями других типов.

В каких случаях метод ToString() вызывается неявно?

Каково значение свойства Length для регулярного строкового литерала,

содержащего эскейп-последовательности?

Как выполняется сравнение строк?

Как выполняется метод Join()?

Как выполняется метод Split()?

Объясните правила применения метода Format().

Назовите назначения элементов поля подстановки строки форматирования.

Перечислите спецификаторы формата поля подстановки.

Какой тип должна иметь переменная цикла foreach, применяемого к строке?

Как инициализировать массив строк?

Как получить строку, символы которой представляют значение типа long?

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

которого находится в строке.

Как при запуске программы задать аргументы?

Как в теле программы получить аргументы из командной строки?

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