У меня есть List<T>
и хочу получить значения обратно в обратном порядке. Я не хочу менять сам список.Явно использую метод расширения
Это похоже на отсутствие проблем, поскольку существует способ расширения Reverse()
для IEnumerable<T>
, который выполняет именно то, что я хочу.
Моя проблема в том, что существует также метод Reverse()
для List<T>
, который отменяет сам список и возвращает пустоту.
Я знаю, что есть много способов для просмотра списка в обратном порядке, но мой вопрос:
Как сказать компилятору, что я хочу использовать метод расширения с тем же именем?
var list = new List<int>(new [] {1, 2, 3});
DumpList(list.Reverse()); // error
Это ИМХО лучший ответ на мой вопрос, так что я даю ему кредиты. – VVS
Если вы не наберете полное пространство имен и имя класса, оба решения имеют одну и ту же потенциальную проблему импорта пространства имен. Так что ничто не лучше, это просто вопрос предпочтения. –
Этот случай намного реже (и, как вы сказали, вы можете полностью квалифицировать имя). В общем, методы расширения предназначены для перегрузки и быть менее предпочтительными, чем методы экземпляров. Если вы пытаетесь подавить разрешение перегрузки метода расширения, тогда лучше не использовать синтаксис метода расширения. –