Книга: Описание языка PascalABC.NET
Методы расширения
Методы расширения
Любой существующий класс, хранящийся во внешней dll, и все классы стандартной библитеки .NET можно расширить новыми методами. Такие методы расширения отличаются от обычных подпрограмм тем. что перед именем подпрограммы ставится имя расширяемого класса с точкой. Например:
procedure integer.Print;
begin
write(Self)
end;
begin
var i := 1;
i.Print;
end.
Можно расширить интерфейс, тогда все классы, реализующие этот интерфейс, получат этот метод. Например, в системном модуле PABCSystem так расширен стандартный интерфейс IEnumerable<T> методом Print:
function System.Collections.Generic.IEnumerable<T>.Print(): IEnumerable<T>;
begin
var g := Self.GetEnumerator();
if g.MoveNext() then
write(g.Current);
while g.MoveNext() do
write(' ', g.Current);
Result := Self;
end;
В результате все классы, реализующие интерфейс IEnumerable<T>, расширяются методом Print:
function System.Collections.Generic.IEnumerable<T>.Print(): IEnumerable<T>;
begin
var g := Self.GetEnumerator();
if g.MoveNext() then
write(g.Current);
while g.MoveNext() do
write(' ', g.Current);
Result := Self;
end;
С помощью методов расширения можно перегружать операции.
Для методов расширения имеется ряд ограничений:
* Методы расширения не могут быть виртуальными.
* Если метод расширения имеет то же имя, что и обычный метод, то предпочте5ние отдаётся обычному методу.
- Обзор классов и объектов
- Видимость членов класса и модификаторы доступа
- Методы
- Инициализаторы полей
- Конструкторы
- Предварительное объявление классов
- Переменная Self
- Свойства
- Индексные свойства
- Наследование
- Переопределение методов
- Наследование конструкторов
- Виртуальные методы и полиморфизм
- Абстрактные методы
- Перегрузка операций
- Классовые поля, методы и конструкторы
- Методы расширения
- Анонимные классы
- Автоклассы
- Расширения SQL
- Файлы без расширения, как правило, текстовые. Как сделать, чтобы при двойном щелчке кнопкой мыши они открывались в Блокн...
- На DVD с фильмами имеются файлы с расширениями VOB и IFO. Какие из них содержат меню диска и можно ли его как-нибудь изм...
- Парадокс расширения-специализации
- Что такое расширения?
- 12.7. Расширения метасимволов
- Как подтолкнуть покупателей к выбору дешевой торговой марки посредством расширения ассортимента
- Расширения файлов
- Раздел расширения
- Приложение 3 Полезные платы расширения
- Глава 4. Как транснациональные компании выбирают мировые городские рынки для расширения бизнеса
- Шины расширения, представленные слотами и разъемами на материнской плате