private static void Collection_Changes(object sender, NotifyCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                Geometric_figure figure = e.NewItems[0] as Geometric_figure;
                Console.WriteLine($"Добавлен новый объект: {figure.Type_Of_Figure}.");
                break;

            case NotifyCollectionChangedAction.Remove:
                Geometric_figure figure_0 = e.OldItems[0] as Geometric_figure;
                Console.WriteLine($"Удален объект: {figure_0.Type_Of_Figure}.");
                break;

            case NotifyCollectionChangedAction.Replace:
                Geometric_figure figure_1 = e.OldItems[0] as Geometric_figure;
                Geometric_figure figure_2 = e.NewItems[0] as Geometric_figure;
                Console.WriteLine($"Объект {figure_1.Type_Of_Figure} заменён на {figure_2.Type_Of_Figure}.");
                break;
            }
        }
        static void Main(string[] args)
        {
            ArrayList list_1       = new ArrayList(); // Необобщенная коллекция
            Random    Rand_Numbers = new Random();

            for (int i = 0; i < 5; i++)
            {
                list_1.Add(Rand_Numbers.Next(0, 50));
            }
            string str_1 = "Programming";

            list_1.Add(str_1);
            Student student_1 = new Student("Ivan", 21);

            list_1.Add(student_1);
            Console.WriteLine("Необобщенная коллекция: ");
            foreach (object i in list_1)
            {
                Console.Write(i + "\t");
            }
            list_1.RemoveAt(2);
            list_1.Remove(student_1);
            Console.WriteLine("\nОбновленная необобщенная коллекция: ");
            foreach (object i in list_1)
            {
                Console.Write(i + "\t");
            }

            Console.WriteLine($"\nСодержится ли данный элемент (student_1) в коллекции? { list_1.Contains(student_1) }");
            Console.WriteLine($"Содержится ли данный элемент (str_1) в коллекции? {list_1.Contains(str_1)}\n\n");

            Queue <int> list_2 = new Queue <int>(); // Обобщённая коллекция (очередь)

            list_2.Enqueue(3); list_2.Enqueue(8); list_2.Enqueue(5); list_2.Enqueue(1);
            list_2.Enqueue(7); list_2.Enqueue(3); list_2.Enqueue(10);
            Console.WriteLine("Обобщенная коллекция (очередь): ");
            foreach (object i in list_2)
            {
                Console.Write(i + "\t");
            }
            list_2.Dequeue();
            Console.WriteLine("\nНаша обновленная обобщенная коллекция: ");
            foreach (object i in list_2)
            {
                Console.Write(i + "\t");
            }


            Dictionary <int, string> list_3 = new Dictionary <int, string>(6); // Обобщённая коллекция (словарь)

            list_3.Add(1, "White"); list_3.Add(2, "Black");
            list_3.Add(3, "Forest"); list_3.Add(4, "Tree");
            list_3.Add(5, "Cat"); list_3.Add(6, "Dog");
            Console.WriteLine("\n\nОбобщенная коллекция (словарь): ");
            foreach (KeyValuePair <int, string> keyValue in list_3)
            {
                Console.Write(keyValue.Key + " - " + keyValue.Value + "   ");
            }
            string elem_1 = list_3[4];

            list_3[4] = "Sea";
            list_3.Add(7, "Wow!");
            Console.WriteLine("\nОбновленная обобщенная коллекция: ");
            foreach (KeyValuePair <int, string> keyValue in list_3)
            {
                Console.Write(keyValue.Key + " - " + keyValue.Value + "   ");
            }
            list_3.Remove(7);
            Console.WriteLine("\nОбновленная обобщенная коллекция: ");
            foreach (KeyValuePair <int, string> keyValue in list_3)
            {
                Console.Write(keyValue.Key + " - " + keyValue.Value + "   ");
            }


            Geometric_figure figure_1 = new Geometric_figure
            {
                Type_Of_Figure = "Квадрат",
                Angle_Quantity = 6,
                Square_Figure  = 78,
            };
            Geometric_figure figure_2 = new Geometric_figure
            {
                Type_Of_Figure = "Круг",
                Angle_Quantity = 0,
                Square_Figure  = 62,
            };
            Geometric_figure figure_3 = new Geometric_figure
            {
                Type_Of_Figure = "Трапеция",
                Angle_Quantity = 4,
                Square_Figure  = 41,
            };
            Queue <Geometric_figure> list_4 = new Queue <Geometric_figure>();

            list_4.Enqueue(figure_1);
            list_4.Enqueue(figure_2);
            list_4.Enqueue(figure_3);
            Console.WriteLine("\n\n\nОбобщенная коллекция с классом (очередь): ");
            foreach (Geometric_figure i in list_4)
            {
                Console.Write(i.Type_Of_Figure + "    ");
            }
            list_4.Dequeue();
            Console.WriteLine("\nОбновленная обобщенная коллекция с классом: ");
            foreach (Geometric_figure i in list_4)
            {
                Console.Write(i.Type_Of_Figure + "    ");
            }

            Dictionary <int, Geometric_figure> list_5 = new Dictionary <int, Geometric_figure>(3);

            list_5.Add(1, figure_3);
            list_5.Add(2, figure_2);
            list_5.Add(3, figure_1);
            Console.WriteLine("\n\nНаша обобщенная коллекция с классом (словарь): ");
            foreach (KeyValuePair <int, Geometric_figure> keyValue in list_5)
            {
                Console.Write(keyValue.Key + " - " + keyValue.Value.Type_Of_Figure + "   ");
            }
            Geometric_figure elem_2 = list_5[1];

            list_5[1] = figure_1;
            list_5.Add(4, figure_2);
            Console.WriteLine("\nНаша обновленная обобщенная коллекция с классом: ");
            foreach (KeyValuePair <int, Geometric_figure> keyValue in list_5)
            {
                Console.Write(keyValue.Key + " - " + keyValue.Value.Type_Of_Figure + "   ");
            }

            list_5.Remove(4);
            Console.WriteLine("\nНаша обновленная обобщенная коллекция с классом: ");
            foreach (KeyValuePair <int, Geometric_figure> keyValue in list_5)
            {
                Console.Write(keyValue.Key + " - " + keyValue.Value.Type_Of_Figure + "   ");
            }
            Console.WriteLine("\n\n");

            ObservableCollection <Geometric_figure> list_6 = new ObservableCollection <Geometric_figure>(); // Наблюдаемая коллекция

            list_6.CollectionChanged += Collection_Changes;
            list_6.Add(figure_1);
            list_6.Add(figure_2);
            list_6.Add(figure_3);
            Console.WriteLine("\nНаша обобщенная коллекция: ");
            foreach (Geometric_figure i in list_6)
            {
                Console.Write(i.Type_Of_Figure + "    ");
            }
            Console.WriteLine("\n");

            list_6.RemoveAt(0);
            Console.WriteLine("\nНаша обновленная необобщенная коллекция: ");
            foreach (Geometric_figure i in list_6)
            {
                Console.Write(i.Type_Of_Figure + "    ");
            }
            Console.ReadKey();
        }