Это метод расширения (через модификатор this
для первого параметра).Вместо этого obj.
передается в качестве первого аргумента.Итак:
obj.Max()
идентичен:
DeclaringType.Max(obj, s=>s.Length)
Но обратите внимание, что подлинные методы экземпляра всегда имеют приоритет во время статического анализа, поэтому, если у объекта был подходящийMax
метод сам , он будет выбран вместо метода расширения.
Методы расширения должны быть статическими методами для не вложенных статических классов.