Метод розширення

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Метод розширення (англ. 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#)
Буває віртуальний Не буває віртуальний