Метод розширення () — у програмуванні синтаксичний цукор, що полягає в додаванні методу до вже наявного класу. Введено в 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#) Буває віртуальний Не буває віртуальний