На этом шаге мы рассмотрим пример, иллюстрирующий различные способы создания такого объекта.
Небольшой пример, в котором текстовые объекты создаются разными способами, представлен в примере ниже.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr95_1 { class Program { static void Main() { // Символьный массив: char[] symbs = { 'Я', 'з', 'ы', 'к', ' ', 'C', '#' }; Console.WriteLine("Символьный массив: "); // Отображение содержимого символьного массива: Console.WriteLine(symbs); // Текстовый объект создается // на основе символьного массива: String A = new String(symbs); // Проверка значения текстового объекта: Console.WriteLine("А: \"{0}\"", A); // Текстовый объект создается на основе // нескольких элементов из символьного массива: String B = new String(symbs, 1, 5); // Проверка значения текстового объекта: Console.WriteLine("В: \"{0}\"", B); // Текстовый объект создается как // последовательность одинаковых симзолов: String C = new String('ы', 7); // Проверка значения текстового объекта: Console.WriteLine("С: \"{0}\"", C); // Создание текстового объекта путем вызова // статического метода с двумя символьными // аргументами: A = getText('A', 'H'); // Проверка значения текстового объекта: Console.WriteLine("А: \"{0}\"", A); // Создание текстового объекта путем вызова // статического метода с двумя символьными // аргументами: B = getText('H', 'A'); // Проверка значения текстового объекта: Console.WriteLine("В: \"{0}\"", B); // Создание текстового объекта путем вызова // статического метода с аргументом - символьным // массивом: C = getText(symbs); // Проверка значения текстового объекта: Console.WriteLine("С: \"{0}\"", C); // Задержка: Console.ReadLine(); } // Статический метод для создания текстового объекта // на основе символьного массива: static String getText(char[] symbs){ // Локальная текстовая переменная: String txt = ""; // Перебор элементов в массиве: for(int k=0; k < symbs.Length; k++) { // Дописывание символа к текстовой строке: txt += symbs[k]; } // Результат метода: return txt; } // Статический метод для создания текстового объекта // на основе двух символьных значений: static String getText(char a, char b) { // Локальная текстовая переменная: String txt = ""; // Локальная символьная переменная: char s = a; // Формирование текстовой строки: while(s <= b) { // Дописывание символа к текстовой строке: txt += s; // Следующий символ для строки: s++; } // Результат метода: return txt; } } }
Результат выполнения программы представлен ниже.
Рис.1. Результат выполнения программы
В программе мы несколькими способами создаем текстовые объекты и затем проверяем их значение (текст, содержащийся в этих объектах). Также в программе описывается две версии статического метода getText(), который результатом возвращает текстовое значение. Одна версия метода подразумевает, что аргументом передается символьный массив, а результатом метод возвращает текстовую строку, сформированную из символов массива. Здесь мы фактически продублировали конструктор класса String, позволяющий создавать текстовые объекты на основе символьных массивов. Еще одна версия метода getText() подразумевает, что аргументами методу передаются два символьных значения (предполагается, что код первого символа-аргумента не больше кода второго символа-аргумента, хотя это и не принципиально). Как работают эти методы? Идея достаточно простая. В теле метода (в обеих версиях) объявляется локальная текстовая переменная txt, начальное значение которой - пустая текстовая строка. Дальше все зависит от того, какой аргумент или аргументы переданы методу. Если методу передан символьный массив, то запускается конструкция цикла for, в котором последовательно перебираются элементы символьного массива-аргумента и каждый символ дописывается к текстовой строке (команда
txt += symbs[k];
s <= b
s <= b
txt += s;
s++;
s <= b
В главном методе программы командой
char[] symbs = { 'Я', 'з', 'ы', 'к', ' ', 'C', '#' };
Console.WriteLine(symbs);
Console.WriteLine (" " + symbs);
Console.WriteLine ("{0}", symbs); ,
System.Char[].
Console.WriteLine(symbs);
Console.WriteLine (" " + symbs);
Console .WriteLine ("{0}", symbs);
Первый текстовый объект создается командой
String A = new String(symbs);
Console.WriteLine("А: \"{0}\"", A); .
Console.WriteLine("А: \"{0}\"", A);
"А: \"{0}\"",
В данном случае текст получается объединением в одну строку символов из массива. Еще один объект создается командой
String B = new String(symbs, 1, 5); .
Теперь текстовый объект создается на основе того же массива symbs, но используются не все символы массива, а только символы, начиная со второго (с индексом 1 - второй аргумент), и используется 5 символов (третий аргумент).
Текстовый объект, который создается командой
String C = new String('ы', 7); ,
В результате выполнения команды
A = getText('A', 'H');
При выполнении команды
B = getText('H', 'A');
Наконец, с помощью команды
C = getText(symbs);
На следующем шаге мы рассмотрим операции с текстовыми объектами.