Как заметил Бока, у List<T>
уже есть способ сделать это.Однако более серьезная проблема заключается в том, что в действительности это не тот сценарий, в котором вам следует создавать новый метод расширения.Уже есть метод расширения, который принимает предикат: Where
.
Конечно, сделав это:
var result = list.Where(x => x != 5).ToList();
немного больше кода, чем использование RemoveAll
:
list.RemoveAll(x => x == 5);
Но:
- он также строит новый список вместо изменения существующего списка на месте,
list
может фактически быть любым IEnumerable<T>
, а не простоList<T>
, - метод
Where
является широко используемым, хорошо документированным методом расширения, который любой опытный программист на C # может распознать на виду - , который понятен любому читающемутот код, который создает новый список, и
- , если вы не хотите создать новый список, просто пропустите
ToList()
и перечислите по result
.
Мне действительно трудно представить себе обстоятельства, когда я хотел бы написать метод расширения для IEnumerable<T>
, который принимает предикат.Вы экономите очень мало, позволяя вам не использовать Where()
.