Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1099 of 1492 menu
◀ ▶

Метод расширения

Метод расширения - это static метод в static классе: первый параметр помечают ключевым словом this, и тогда метод можно вызывать как член экземпляра. Так расширяют string, типы из List и другие, к которым нет доступа для правки. Это не свойства и не поля - только методы; будущие extension-members другого вида здесь не рассматриваем.

Синтаксис

static class ИмяExt { public static типRes Метод(this тип target, ...) { } }

Пример

Давайте добавим метод к string и вызовем его как член строки:

using System; static class StringExt { public static string Repeat(this string str, int count) { string res = ""; for (int i = 0; i < count; i++) { res += str; } return res; } } class Program { static void Main() { string str = "ab"; Console.WriteLine(str.Repeat(2)); } }

Результат выполнения кода:

"abab"

Пример

Давайте сделаем расширение без Linq - через цикл:

using System; static class StringExt { public static string TakeHead(this string str, int len) { if (len >= str.Length) { return str; } return str.Substring(0, len); } } class Program { static void Main() { Console.WriteLine("abcde".TakeHead(3)); } }

Результат выполнения кода:

"abc"

Пример

Давайте расширим свой класс методом подсчёта длины текста:

using System; class Label { public string Text = "abcde"; } static class LabelExt { public static int TextSize(this Label label) { return label.Text.Length; } } class Program { static void Main() { var label = new Label(); Console.WriteLine(label.TextSize()); } }

Результат выполнения кода:

5

Смотрите также

  • ключевое слово class,
    который расширяют или объявляют как static
  • метод Substring,
    который часто оборачивают в расширение
  • ключевое слово partial,
    которым делят большие типы по файлам
  • модификатор internal,
    которым закрывают класс расширений в сборке
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить