Метод розширення (англ. extension method) — у програмуванні синтаксичний цукор, що полягає в додаванні методу до вже наявного класу. Введено в C# 3.0. Не вводячи в мову нової функціональності, робить код виразнішим.

Було:

string x = "якийсь рядок";
string y = Utility.Reverse(x);

SomeObject z = HelperClass.Operation2(HelperClass.Operation1(x, arg1), arg2);

Стало:

string x = "якийсь рядок";
string y = x.Reverse();

SomeObject z = x.Operation1(arg1).Operation2(arg2);

Синтаксис C# ред.

public static class Utility
{
  public static string Reverse(this string input)
  {
    char[] chars = input.ToCharArray();
    Array.Reverse(chars);
    return new String(chars);
  }
}

У C#, якщо є і вбудований метод, і розширення, пріоритет надається вбудованому методу.

Відмінність від спадкування ред.

Успадкування Метод розширення
Практично неможливо застосовувати на чужих фреймворках і чужому коді зі складною структурою Можна застосовувати для будь-якого коду
Можна застосовувати для об'єктів, від яких можна успадковувати Можна застосовувати для об'єктів будь-якого типу (в том числі sealed, яким є int або string в C#)
Буває віртуальний Не буває віртуальний