Книга: Описание языка PascalABC.NET
Анонимные классы
Анонимные классы
Иногда необходимо сгенерировать объект класса на лету, не описывая класс. У такого класса нет имени (он анонимный), но известен набор полей.
Объект анонимного класса создаётся следующим образом:
var p := new class(Name := 'Иванов', Age := 20);
Println(p.Name,p.Age);
У объекта p автоматически генерируются публичные поля Name и Age соответствующих типов.
Два объекта принадлежат к одному анонимному классу если они имеют одинаковый набор полей, и эти поля принадлежат к одинаковым типам. Например:
var p1 := new class(Name := 'Петров', Age := 21);
p1 := p;
Если поля безымянного класса инициализируются переменными, то имена полей можно не писать - они генерируются автоматически и их имена и типы совпадают с именами и типами переменных. Например:
var Name := 'Попова';
var Age := 23;
var p := new class(Name, Age);
Println(p.Name,p.Age);
Поля безымянного класса можно также инициализировать переменной с составным именем, имеющим точечную нотацию. В этом случае в качестве имен полей берутся последние имена в точечной нотации. Например:
var d := new DateTime(2015,5,15);
var p := new class(d.Day, d.Month, d.Year);
Println(p.Day, p.Month, p.Year);
Println(p);
- Обзор классов и объектов
- Видимость членов класса и модификаторы доступа
- Методы
- Инициализаторы полей
- Конструкторы
- Предварительное объявление классов
- Переменная Self
- Свойства
- Индексные свойства
- Наследование
- Переопределение методов
- Наследование конструкторов
- Виртуальные методы и полиморфизм
- Абстрактные методы
- Перегрузка операций
- Классовые поля, методы и конструкторы
- Методы расширения
- Анонимные классы
- Автоклассы
- Анонимные методы в C#
- Анонимные типы
- Автоклассы
- Анонимные валюты
- 9.1. Классы и прототипы
- Классы сертификатов
- Статические классы
- 9.8. Классы в ECMAScript 5
- 9.7.4. Иерархии классов и абстрактные классы
- Классы синхронизации, внедренные в версии .NET Framework 4.0
- Классы для программирования графики
- 1.3. Анонимные прокси-серверы: сокрытие IP-адреса и местонахождения