IList<int>
не имеет метода Reverse
, поэтому он использует метод расширения.Единственный способ использовать List<T>.Reverse
в вашем справочнике IList<int>
- привести или преобразовать его в List<int>
.Кастинг будет работать, только если вы уверены, что это действительно List<int>
во-первых:
IList<int> abstractList;
var concreteList = (List<int>)abstractList;
concreteList.Reverse();
Другой вариант - создать a List<int>
из вашего IList<int>
экземпляр, вместо того, чтобы предполагать, что это уже List<int>
:
IList<int> abstractList;
var concreteList = new List<int>(abstractList);
concreteList.Reverse();
причина , что метод расширения Reverse
фактически не влияет на базовый список, потому что он работаетв IEnumerable<T>
, который не обязательно доступен для записи (ни один из методов расширения Enumerable
не вносит изменений в исходную коллекцию, они возвращают новую коллекцию).
Чтобы использовать эту версиюиз Reverse
, просто используйте продукт вызова Reverse
вместо исходного списка:
IList<int> abstractList;
IEnumerable<int> reversedList = abstractList.Reverse();