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

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

Метод расширения (англ. extension method) в программировании — синтаксический сахар, для поддержки добавления метода к существующему классу. Введён в C# 3.0. Упрощает модификацию сторонних классов. Аналогичен использованию интерфейсов, но при этом не требует (не должен требовать) наследования изменяемого класса от интерфейса. Фактически — вид делегирования.

Синтаксис C#

/* Следующий пример показывает метод расширения, определённый для класса System.String (в языке C# имеет псевдомим string). 
Заметим, что он определён внутри невложенного и ненастраиваемого статичного класса: */
namespace ExtensionMethods
{
    public static class MyExtensions
    {
        // метод WordCount принимает на вход строку, возвращает число слов, т.е. число подстрок, разделённых пробелом, точкой или вопросительным знаком.
        public static int WordCount(this string str)
        {
            return str.Split(new char[] { ' ', '.', '?' }, 
                             StringSplitOptions.RemoveEmptyEntries).Length;
        }
    }   
}
 
/* Метод-расширение WordCount появится в области видимости, если подключить соответствующее пространство имён: */
using ExtensionMethods;
 
/* Теперь его можно вызвать: */
string s = "Hello Extension Methods";
int i = s.WordCount(); // i получит значение 3
int j = "Съешь же ещё этих мягких французских булок, да выпей чаю.".WordCount(); // j получит значение 10

Код взят: http://msdn.microsoft.com/en-us/library/bb383977.aspx

В C#, если есть и встроенный метод, и расширение, приоритет даётся встроенному методу.

Синтаксис Ruby

class TestClass
        def method1
        end
 
        def method2
        end
end
 
test = TestClass.new
test.method1
test.method2
 
class TestClass
        def method3
        end
end
 
test.method3

В Ruby, если есть и встроенный метод, и расширение, приоритет дается расширенному методу.

Отличие от наследования

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

Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Метод расширения" в других словарях:

  • Метод расширения ядра — метод восходящего программирования, при котором основное внимание уделяется выявлению множества вспомогательных модулей, а не определению функции всей программы в целом. См. также: Технологии программирования Финансовый словарь Финам …   Финансовый словарь

  • Метод расширения спектра методом прямой последовательности — Технологии модуляции  п·Аналоговая модуляция AM · SSB · ЧМ(FM) · ЛЧМ · ФМ(PM) · СКМ Цифровая модуляция АМн …   Википедия

  • Васильева метод расширения ротовой щели — (Г. А. Васильев, 1902 1974, сов. стоматолог) хирургическая операция рассечения тканей в области углов рта с перемещением кнаружи мостовидных лоскутов из красной каймы и слизистой оболочки губ: применяется для расширения ротовой щели при… …   Большой медицинский словарь

  • метод — метод: Метод косвенного измерения влажности веществ, основанный на зависимости диэлектрической проницаемости этих веществ от их влажности. Источник: РМГ 75 2004: Государственная система обеспечения еди …   Словарь-справочник терминов нормативно-технической документации

  • Метод конечных разностей во временной области — (англ. Finite Difference Time Domain, FDTD)  один из наиболее популярных методов численной электродинамики, основанный на дискретизации уравнений Максвелла, записанных в дифференциальной форме. Содержание 1 Описание 2 Алгоритм Йи …   Википедия

  • Метод стандартного уплотнения — метод лабораторного испытания грунта, предназначенный для получения значения максимальной стандартной плотности и оптимальной влажности грунта, заключающийся в послойном уплотнении грунта стандартной нагрузкой при разных влажностях в условиях… …   Строительный словарь

  • Метод реальных опционов —   метод оценки инновационных проектов, характеризующихся высокой неопределенностью ожидаемых результатов. Предполагает перенос из финансового в реальный сектор экономики концепции опционов и их применение для оценки инновационных проектов.… …   Толковый словарь «Инновационная деятельность». Термины инновационного менеджмента и смежных областей

  • Метод компрессионного сжатия — 5.4 Метод компрессионного сжатия 5.4.1 Сущность метода 5.4.1.1 Испытание грунта методом компрессионного сжатия проводят для определения следующих характеристик деформируемости: коэффициента сжимаемости m0, модуля деформации Е, структурной… …   Словарь-справочник терминов нормативно-технической документации

  • Метод одноосного сжатия — 6.3 Метод одноосного сжатия 6.3.1 Сущность метода 6.3.1.1 Испытание мерзлого грунта методом одноосного сжатия проводят для определения следующих характеристик прочности и деформируемости: предела прочности на одноосное сжатие Rс, Rос, модуля… …   Словарь-справочник терминов нормативно-технической документации

  • Метод трехосного сжатия — 5.3 Метод трехосного сжатия 5.3.1 Сущность метода 5.3.1.1 Испытание грунта медом трехосного сжатия проводят для определения следующих характеристик прочности и деформируемости: угла внутреннего трения j, удельного сцепления с, сопротивления… …   Словарь-справочник терминов нормативно-технической документации


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»