Вызвать явное преобразование explicit - C#

Узнай цену своей работы

Формулировка задачи:

Кусок задания которого я не смог реализовать (выполнить): операции преобразования класса-строка в тип StringBuilder (и наоборот). Продемонстрировать работу класса. В конце кода в классе
Konstryktor
находятся два преобразования explicit, нужно вызвать с главного main. Код :
 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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы