Вызвать явное преобразование explicit - C#
Формулировка задачи:
Кусок задания которого я не смог реализовать (выполнить):
операции преобразования класса-строка в тип StringBuilder (и наоборот). Продемонстрировать работу класса.
В конце кода в классе находятся два преобразования explicit, нужно вызвать с главного main.
Код : Сколько перечитываю теории по данному вопросу, не могу вникнуть в суть.
Konstryktor
class Program { static void Main(string[] args) { string strokovi_literal = "сТроКо,В..ый ли:ТеРал", line2; StringBuilder nik = new StringBuilder(); Konstryktor str = new Konstryktor(); Konstryktor constr = new Konstryktor(); int index = 0; bool proverka = false; Console.WriteLine("Два конструктора строк: "); Konstryktor one = new Konstryktor(strokovi_literal); // конструктор с константой one.Print(); Konstryktor two = new Konstryktor(); // конструктор пустой строки two.Print(); do { Console.WriteLine("-------------------------------------------------------"); Console.WriteLine("1 - Подсчитать пробелы\n2 - перевод в нижний регистр\n3 - Удаление знаков препинания\n4 - подсчёт количества элементов\n5 - Новое значение поля\n6 - Индексатор\n7 - Перезагрузка (ВЕРХНИЙ РЕГИСТР)\n8 - Перезагрузка(нижний регистр)\n9 - Проверим заполненость\n10 - Операция &\n11 - Преобразование\n12 - Выход"); Console.WriteLine("-------------------------------------------------------"); int meni = int.Parse(Console.ReadLine()); switch (meni) { case 1: one.KolPrvStr(); // подсчёт пробелов break; case 2: one.Registr(); // перевод в нижний регистр one.Print(); break; case 3: one.ZnakiPrepinania(); // delete params one.Print(); break; case 4: Console.WriteLine("Количество элементов: " + one.Length); // подсчёт кол-ва элементов break; case 5: Console.Write("Новое значение поля: "); nik = new StringBuilder(Console.ReadLine()); // новое значение поля one.Kio = nik; one.Print(); break; case 6: Console.WriteLine("Введите искомый элемент (помним о нумерации с 0): "); // индекстор index = int.Parse(Console.ReadLine()); Console.WriteLine(one.line[index]); break; case 7: Console.WriteLine("Верхний регистр " + +one); break; case 8: Console.WriteLine("Нижний регистр " + -one); break; case 9: Console.WriteLine("Проверка на заполненность"); if (one) Console.WriteLine("Строка не пуста"); // перезагрузка проверка на заполненность else Console.WriteLine("Строка пуста"); break; case 10: Console.WriteLine("Равны ли без учёта регистра, введите строку "); // перезагрузка сравнение line2 = Console.ReadLine(); str = new Konstryktor(line2); Console.WriteLine("Строки {0}", one & str); break; case 11: // тут дожно вызыватся преобразование типов break; case 12: proverka = true; break; } } while (proverka == false); } } class Konstryktor { public StringBuilder line; public int kolPr = 0; public Konstryktor(string a) { line = new StringBuilder(a); } public Konstryktor() { StringBuilder line = new StringBuilder(); } public void KolPrvStr() { char probel = ' '; for (int i = 0; i < line.Length; i++) { if (line[i] == probel) kolPr++; } Console.WriteLine("Количество пробелов: " + kolPr); } public void Registr() { for (int i = 0; i < line.Length; i++) { if (char.IsUpper(line[i])) line[i] = char.ToLower(line[i]); } } public void ZnakiPrepinania() { for (int i = 0; i < line.Length; i++) { if (char.IsPunctuation(line[i])) { line.Remove(i, 1); i--; } } } public int Length { get { return line.Length; } } public StringBuilder Kio { set { line = value; } get { return line; } } public char this [int index] { get { return line[index]; } } public static string operator +(Konstryktor a) { return a.line.ToString().ToUpper(); } public static string operator -(Konstryktor a) { return a.line.ToString().ToLower(); } public static bool operator true(Konstryktor a) { if (a.line.Length != 0) return true; return false; } public static bool operator false(Konstryktor a) { if (a.line.Length == 0) return true; return false; } public static bool operator &(Konstryktor a, Konstryktor b) { return a.line.ToString().ToUpper().Equals(b.line.ToString().ToUpper()); } public static explicit operator string(Konstryktor a) // первое преобразование из StringBuilder в string { return a.line.ToString(); } public static explicit operator Konstryktor(string a) // второе преобразование из string в StringBuilder { return new Konstryktor(a); } public void Print() { Console.WriteLine(line); } }
Решение задачи: «Вызвать явное преобразование explicit»
textual
Листинг программы
Konstryktor test = new Konstryktor("test"); string foo = (string)test; Konstryktor testCopy = (Konstryktor)foo;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д