Класс char[] - массив символов
В языке C# определен класс Char[], и его можно использовать для представления строк постоянной длины, как это делается в С++. Более того, поскольку массивы в C# динамические, то расширяется класс задач, в которых можно использовать массивы символов для представления строк. Так что имеет смысл разобраться, насколько хорошо C# поддерживает работу с таким представлением строк.
Прежде всего, ответим на вопрос, задает ли массив символов C# строку С, заканчивающуюся нулем? Ответ: нет, не задает. Массив char[] - это обычный массив. Более того, его нельзя инициализировать строкой символов, как это разрешается в С++. Константа, задающая строку символов, принадлежит классу String, а в C# не определены взаимные преобразования между классами String и Char[], даже явные. У класса String есть, правда, динамический метод ToCharArray, задающий подобное преобразование. Возможно также посимвольно передать содержимое переменной string в массив символов. Приведу пример:
public void TestCharArAndString() { //массивы символов //char[] strM1 = "Hello, World!"; //ошибка: нет преобразования класса string в класс char[] string hello = "Здравствуй, Мир!"; char[] strM1 = hello.ToCharArray(); PrintCharAr("strM1",strM1); //копирование подстроки char[] World = new char[3]; Array.Copy(strM1,12,World,0,3); PrintCharAr("World",World); Console.WriteLine(CharArrayToString(World)); }//TestCharArAndString
Закомментированные операторы в начале этой процедуры показывают, что прямое присваивание строки массиву символов недопустимо. Однако метод ToCharArray, которым обладают строки, позволяет легко преодолеть эту трудность. Еще одну возможность преобразования строки в массив символов предоставляет статический метод Copy класса Array.
В нашем примере часть строки strM1 копируется в массив World. По ходу дела в методе вызывается процедура PrintCharAr класса Testing, печатающая массив символов как строку. Вот ее текст:
void PrintCharAr(string name,char[] ar) { Console.WriteLine(name); for(int i=0; i < ar.Length; i++) Console.Write(ar[i]); Console.WriteLine(); }//PrintCharAr
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий