Хелпикс

Главная

Контакты

Случайная статья





Задание 6.. Массив символов char[].



Задание 6.

Массив символов char[].

 

В языке C# определен класс Char[], и его можно использовать для представления строк постоянной длины, как это делается в С++. Более того, поскольку массивы в C# динамические, то расширяется класс задач, в которых можно использовать массивы символов для представления строк. Так что имеет смысл разобраться, насколько хорошо C# поддерживает работу с таким представлением строк.

Массив char[] - это обычный массив. Его нельзя инициализировать строкой символов, как это разрешается в С++. Константа, задающая строку символов, принадлежит классу String, а в C# не определены взаимные преобразования между классами String и Char[], даже явные. У класса String есть, правда, динамический метод ToCharArray, задающий подобное преобразование. Возможно также, посимвольно передать содержимое переменной string в массив символов.

Метод ToCharArray позволяет преобразовать строку в массив символов. К сожалению, обратная операция не определена, поскольку метод ToString, которым, конечно же, обладают все объекты класса Char[], печатает информацию о классе, а не содержимое массива.

Класс Char[], как и всякий класс-массив в C#, является наследником не только класса Object, но и класса Array, и, следовательно, обладает всеми методами родительских классов. А есть ли у него специфические методы, которые позволяют выполнять операции над строками, представленными массивами символов? Таких специальных операций нет. Но некоторые перегруженные методы класса Array можно рассматривать как операции над строками. Например, метод Copy дает возможность выделять и заменять подстроку в теле строки. Методы IndexOf, LastIndexOf позволяют определить индексы первого и последнего вхождения в строку некоторого символа.

 

1. Создайте консольное приложение CharArray;

2. Создайте несколько строк, инициализируя их различными способами;

Методические указания:

char[] str1 = "Hello, World!";

string str2 = "Здравствуй, Мир!";

В каком случае выведется сообщение об ошибке и почему?

3. Напишите функцию PrintCharAr(), выводящую на экран массив символов, получаемый в качестве входящего параметра;

Методические указания:

В цикле произвести вывод посимвольно:

Console.Write(ar[i]);

4. Напишите функцию CharArrayToString(), обратную методу ToCharArray, т.е. преобразующую массив символов в строку;

Методические указания:

String CharArrayToString(char[] ar) //функция возвращает объект типа String

5. Напишите функцию IndexOfStr, находящую индекс вхождения подстроки в строку:

Методически указания:

int IndexOfStr( char[]s1, char[] s2) // нахождение строки s2 в s1

6. Напишите процедуру TestIndexSym(), определяющую индексы вхождения символов и подстрок в строку;

7. Проанализируйте результаты выполнения всех функций.

 

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

 

1. Почему нельзя присвоить значение символу внутри строки, используя индекс?

2. Почему оператор сравнения == работает с типом String как со значимыми типами данных?

3. Перечислите методы класса String;

4. В чем заключается различие между классами String, StringBuilder и массивами символов?

5. Перечислите преимущества и недостатки класса StringBuilder.

6. Перечислите методы класса StringBuilder;

7. Объясните процесс инициализации символьного массива строкой.

8. Объясните работу и назначение свойств класса StringBuilder  Capacity и MaxCapacity.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.