static void Main(string[] args)
        {
            char start = 'к', finish = 'ю';

            do
            {
                MyStrings testString  = new RusString(start, finish, 10);
                MyStrings testString2 = new LatString('k', 'u', 10);
                Console.WriteLine(testString);
                Console.WriteLine(testString.CountLetter('о'));
                Console.WriteLine(testString2);
                Console.WriteLine(testString2.CountLetter('o'));
                // тестируем неверные входные данные
                try
                {
                    testString  = new RusString(start, finish, -11);
                    testString2 = new LatString('ю', 'u', 10);
                }
                catch (ArgumentOutOfRangeException)
                {
                    Console.WriteLine("Состояние объекта не изменено");// если объект не сформирован
                }
                Console.WriteLine(testString);
                Console.WriteLine(testString.CountLetter('о'));
                Console.WriteLine(testString2);
                Console.WriteLine(testString2.CountLetter('o'));
            } while (Console.ReadKey().Key != ConsoleKey.Escape);
        }
        static void Main(string[] args)
        {
            do
            {
                MyStrings testString;
                try
                {
                    testString = new RusString('ф', 'z', 11);
                    Console.WriteLine(testString);
                    Console.WriteLine(testString.CountLetter('о'));
                }
                catch (ArgumentOutOfRangeException ex)
                {
                    Console.WriteLine("Состояние объекта не изменено");
                }

                try
                {
                    testString = new RusString('в', 'я', 11);
                    Console.WriteLine(testString);
                    Console.WriteLine(testString.CountLetter('о'));
                }
                catch (ArgumentOutOfRangeException ex)
                {
                    Console.WriteLine("Состояние объекта не изменено");
                }

                try
                {
                    testString = new LatString('ф', 'z', 11);
                    Console.WriteLine(testString);
                    Console.WriteLine(testString.CountLetter('x'));
                }
                catch (ArgumentOutOfRangeException ex)
                {
                    Console.WriteLine("Состояние объекта не изменено");
                }

                try
                {
                    testString = new LatString('a', 'z', 11);
                    Console.WriteLine(testString);
                    Console.WriteLine(testString.CountLetter('p'));
                }
                catch (ArgumentOutOfRangeException ex)
                {
                    Console.WriteLine("Состояние объекта не изменено");
                }
            } while (Console.ReadKey().Key != ConsoleKey.Escape);
        }
        static void Main(string[] args)
        {
            char start = 'к', finish = 'ю';

            do
            {
                RusString testString = new RusString(start, finish, 10); Console.WriteLine(testString); Console.WriteLine(testString.CountLetter('о'));
                // тестируем неверные входные данные
                try
                {
                    testString = new RusString(start, finish, -11);
                }
                catch (ArgumentOutOfRangeException ex)
                {
                    Console.WriteLine("Состояние объекта не изменено");
                }
                Console.WriteLine(testString); Console.WriteLine(testString.CountLetter('о'));
            } while (Console.ReadKey().Key != ConsoleKey.Escape);
        }