Exemplo n.º 1
0
        /// <summary>
        /// Метод Remove отвечает за удаление указанного в параметрах элемента
        /// </summary>
        /// <param name="el">Удаляемый элемент</param>
        /// <returns>Возвращает true если элемент был удален и false в обратном случае</returns>
        public bool Remove(T el)
        {
            //Переменной col типа List присваевается ссылка на массив collection преобразованный в коллекцию List
            List <T> col = collection.ToList();

            try
            {
                //Проверка, содержит ли коллекция указанный элемент
                if (col.Contains(el))
                {
                    //Если событию удаления указанного элемента задан обработчик
                    if (OnRemove != null)
                    {
                        //Создается экземпляр класса eventArgs содержащий удаляемый элемент
                        var eventArgs = new Remover <T>(el);

                        //Вызов функции обработчика
                        OnRemove(this, eventArgs);
                    }
                    //Если операция удаления элемента возвращает 'true'
                    if (col.Remove(el))
                    {
                        ///Переменной collection присваивается ссылка на коллекцию col преобразованную в массив
                        collection = col.ToArray();

                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    //Если указанного элемента в коллекции нет, то выбрасывается исключение
                    throw new ArgumentException($"Элемент {el} отсутствует в коллекции");
                }
            }
            catch (ArgumentException ex)
            {
                //Создается экземпляр класса eventArgs содержащий удаляемый элемент и сообщение исключения
                var eventArgs = new RemoverException <T>(el, ex.Message);

                //Вызов функции обработчика
                OnRemoverException(this, eventArgs);

                return(false);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Метод RemoveException вызывается при возникновении исключения при удалении определенного элемента из коллекции
 /// </summary>
 /// <param name="sender">Объект, в контексте которого вызывается функция</param>
 /// <param name="remover">Объект хранящий сообщени о возникновении исключения</param>
 private static void RemoveException(object sender, RemoverException <string> remover)
 {
     Console.ForegroundColor = ConsoleColor.Red;
     Console.WriteLine($"{remover.Message}");
     Console.ResetColor();
 }