Правила для метода расширения аналогичны правилам для обычного поиска вызова метода. Краткая версия - это то, что компилятор найдет все методы и методы расширения, какие из названий доступны, и выберет наиболее подходящее из них (методы без расширения предпочтительнее методов расширения).
Как и обычные методы, выбор метода расширения может быть неоднозначным. Это было бы здесь, если бы в приложении использовались пространства имен System.Linq
и Test
. Судя по вашей информации, кажется, что на пространство имен теста не указана using
, следовательно, оно не будет рассматриваться, и версия Linq победит.
Примечание: Выше приведено краткое описание того, как происходит поиск, и оно ни в коем случае не является окончательным. Спецификация языка C # является здесь авторитетной и описывает ее гораздо подробнее.