Методы расширения позволяют «добавлять» методы к существующим типам (включая типы, которыми вы не владеете, например string или int) без их изменения или наследования. Они определяются как статические методы с модификатором this на первом параметре и вызываются так, как если бы они были методами экземпляра. LINQ построен на них.
