Здравствуйте, Khimik, Вы писали:
K>Я выучил что такое классы, но не осилил интерфейсы. Расскажите пожалуйста понятно, что это такое. K>Я одно время думал, что интерфейс – это такой абстрактный класс, который поддерживает множественное наследование, поэтому его можно добавить к реальному (не абстрактному) классу при наследовании, соответственно расширив набор функций этого класса. А переменные в интерфейсе есть?
Всё верно. Переменный по идеологии не положено. Properties в интерфейсах можно, это же по сути set/get
K>Вот пример использования интерфейсов для реализации умных указателей, который мне подсказали. Исходный код: K>[...skipped...]
А вот в примерах не интерфейсы, а дженерики (аналог шаблонов в C++).
K>Я не понимаю суть этого кода. Например где хранится счётчик, сколько элементов s было создано? И в каких участках кода проверяется, не пора ли удалить неиспользуемые элементы?
Счётчик и проверка хранится внутри реализации класса Shared<>