static void Main() { const int n = 7; StringBase[] mas = new StringBase[n]; // Создание массива объектов базового типа Строка mas[0] = new StringDecimal(150); // Заполнение вперемешку объектами как базового так и производного типов mas[1] = new StringDecimal(" +125 "); // тут заполняем объектами типа Десятичная строка mas[2] = new StringDecimal("-25"); mas[3] = new StringDecimal('2'); mas[4] = new StringDecimal("qwerty"); mas[5] = new StringBase("qwerty"); // тут добавим несколько объектов типа Строка mas[6] = new StringBase("abc"); Console.WriteLine("\nДемонстрация операций над строками:"); Console.WriteLine("\"{0}\" = \"{1}\" \t is {2}", mas[0], mas[1], mas[0] == mas[1]); Console.WriteLine("\"{0}\" != \"{1}\" \t is {2}", mas[2], mas[4], mas[2] != mas[4]); Console.WriteLine("\"{0}\" > \"{1}\" \t is {2}", mas[0], mas[1], mas[0] > mas[1]); Console.WriteLine("\"{0}\" < \"{1}\" \t is {2}", mas[2], mas[3], mas[2] < mas[3]); Console.WriteLine("\"{0}\" + \"{1}\" \t = {2}", mas[0], mas[1], (mas[0] + mas[1])); Console.WriteLine("\"{0}\" - \"{1}\" \t = {2}", mas[0], mas[1], (mas[0] - mas[1])); Console.WriteLine("\"{0}\" + \"{1}\" \t = {2}", mas[5], mas[6], (mas[5] + mas[6])); Console.WriteLine("\"{0}\" + \"{1}\" \t = {2}", mas[0], mas[6], (mas[0] + mas[6])); Console.WriteLine("\nДлина строки \"{0}\" = {1}", mas[1], mas[1].Length()); Console.WriteLine("Cтрока до очистки \"{0}\"", mas[6]); mas[6].Clear(); Console.WriteLine("Cтрока после очистки \"{0}\"", mas[6]); PrintArray("\nИсходный массив", mas); Array.Sort(mas); // сортировка массива (демонстрация работы метода CompareTo) PrintArray("Отсортированный массив", mas); }
override public bool Equals(object obj) // проверяет арифметическое равенство строк (как два числа) { if (obj == null || GetType() != obj.GetType()) { return(false); } StringDecimal temp = (StringDecimal)obj; return(number_value == temp.number_value); }
override public object Subtraction(object obj) // Арифметическое вычитание { try { StringDecimal temp = (StringDecimal)obj; return(new StringDecimal(this.number_value - temp.number_value)); } catch { return(base.Subtraction(obj)); // если не удалось сложить как числа - складываем как строки } }
override public int CompareTo(object obj) // Сравнивает строку по значению с другой как два числа { StringDecimal temp = (StringDecimal)obj; if (this.number_value > temp.number_value) { return(1); } if (this.number_value < temp.number_value) { return(-1); } return(0); }