예제 #1
0
        /// <summary>
        /// Метод удаляющий элемент коллекции под указанным индексом
        /// </summary>
        /// <param name="index"></param>
        public void RemoveAt(int index)
        {
            //Переменной col типа List присваевается ссылка на массив collection преобразованный в коллекцию List
            List <T> col = collection.ToList();

            try
            {
                //Далее осуществляется проверка наличия передаваемого индекса в коллекции
                int count = 0;
                for (int i = 0; i < collection.Length; i++)
                {
                    if (i == index)
                    {
                        count++;
                    }
                }

                //Если совпадение найдено
                if (count == 1)
                {
                    //Проверяется задан ли обработчик на событие удаления элемента по заданному индексу
                    if (OnRemovingAt != null)
                    {
                        //Экземпляр класса RemovrtAt содержит индекс удаляемого элемента из коллекции
                        var eventArgs = new RemoverAt(index);

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

                        //Если свойству Cancel присвоено значение 'false', то удаление отменяется
                        if (eventArgs.Cancel)
                        {
                            return;
                        }
                    }
                    //Удаление элемента под заданным индексом
                    col.RemoveAt(index);

                    ///переменной collection присваевается ссылка на коллекцию преобразованную к массиву после
                    ///удаления из нее элемента
                    collection = col.ToArray();
                }
                else
                {
                    //Если совпадение не найдено, выбрасывается исключение
                    throw new ArgumentException("Передаваемый индекс не найден.");
                }
            }
            catch (ArgumentException ex)
            {
                //Экземпляр класса RemoverAtCancel содержит сообщение возникшего исключения и индекс удаляемого элемента
                var eventArgs = new RemoverAtCancel(index, ex.Message);

                //Вызов функции обработчика
                OnCancelRemoverAt(this, eventArgs);
            }
        }
예제 #2
0
 /// <summary>
 /// Метод CancelRemoverAt вызывается при отмене удаления элемента на определенной позиции
 /// </summary>
 /// <param name="sender">Объект, в контексте которого вызывается функция</param>
 /// <param name="rem">Объект хранящий индекс элемента и сообщение об удалении элемента</param>
 private static void CancelRemoverAt(object sender, RemoverAtCancel rem)
 {
     Console.ForegroundColor = ConsoleColor.Red;
     Console.WriteLine($"{rem.Message} Индекс - {rem.Index}");
     Console.ResetColor();
 }