Понятие полезно все вокруг в объектно-ориентированном программировании. Мне я думаю об интерфейсе как о контракте. Так долго мой класс и Ваш класс договариваются об этом контракте сигнатуры метода, с которым мы можем "соединить интерфейсом". Что касается абстрактных классов те я вижу как больше базовых классов, которые гасят некоторые методы, и я должен заполнить детали.
Используйте выражения lamba, если это List
:
list.RemoveAll(x => x.Contains(line_to_delete));
Самый простой способ - использовать:
var result = list.Where(x => !x.Contains(line_to_delete))
Во-первых, убедитесь, что это недостаточно эффективно. Если это не так, вам нужно прибегнуть к расширенным структурам данных для представления ваших строк, таким как trie . В C # нет встроенной поддержки подобных вещей.
Лучше всего отсортировать список и использовать бинарный поиск. SortedList сделает это за вас .. Таким образом, вы можете получить производительность O (log (n))
List<String> regKey = new List<String> { "test1", "test2" };
var toDelete = regKey.Where(u => u.Contains(line_to_delete)).SingleOrDefault();
if (toDelete != null)
regKey.Remove(toDelete);
или
regkey.RemoveAll(k => k.Contains(line_to_delete));
Это сделает ваше удаление более читабельным, но я не уверен в производительности по сравнению с вашим текущим методом.
Я думаю, что лучше использовать indexOf, чем contains, что ускоряет поиск
, поэтому используйте:
regkey.RemoveAll(k => k.IndexOf(line_to_delete) >=0);