Дженерики: ограничение "constructor"

добавлено: 26 сен 13
понравилось:0
просмотров: 1316
комментов: 0

теги:

Автор: Роман Янковский

Наш японский коллега Jun Hosokawa заметил интересную особенность ограничения "constructor" в дженериках Delphi.

type
TConstructorConstraint<T: constructor> = class
end;

В качестве вступления цитата из справки:
автор
This means that the actual argument type must be a class that defines a default constructor (a public parameterless constructor), so that methods within the generic type may construct instances of the argument type using the argument type’s default constructor, without knowing anything about the argument type itself (no minimum base type requirements).

То есть, согласно документации это ограничение позволяет убедиться, что аргумент дженерика — это класс, который имеет публичный конструктор без параметров, благодаря чему дженерик сможет создать экземпляр соответствующего типа, ничего о нем не зная. Здравый смысл может подсказывать нам, что речь только о классах, но на практике все оказывается не так просто. И встретив на просторах интернета высказывания о том, что это при использовании этого ограничения в качестве аргумента все-таки можно передавать не только классы, Jun решил проверить как такое возможно.

Читать далее

Комментарии




Необходимо войти на сайт, чтобы оставлять комментарии