Структура — различия между версиями
Админ (обсуждение | вклад) (Новая страница: «=== Завершители и Деструкторы в Структуре === В языке Перфолента.Net Вы НЕ можете создать ме…») |
Админ (обсуждение | вклад) м (→Завершители и Деструкторы в Структуре) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 8: | Строка 8: | ||
[[Категория:Тип данных]] | [[Категория:Тип данных]] | ||
− | [[Категория:Перфолента. | + | [[Категория:Перфолента.NET]] |
+ | [[Категория:Описание языка Перфолента.NET]] |
Текущая версия на 19:47, 8 июня 2023
Завершители и Деструкторы в Структуре
В языке Перфолента.Net Вы НЕ можете создать методы Завершитель и Деструктор в Структуре. И хотя Вы по-прежнему можете реализовать интерфейс System.IDisposable вручную, делать это крайне не рекомендуется. Одна из причин состоит в том, что при присваивании переменной или при передаче в параметры метода, структура копируется вместе с содержимым всех полей. Поэтому в программе может неявно присутствовать несколько копий структуры, в том числе в скрытых временных переменных, созданных компилятором. Вы можете легко запутаться и вызвать метод Dispose для уже освобожденных ресурсов.
Так же учтите, что сборщик мусора игнорирует метод Finalize для структур и по этой причине его реализация бесполезна.
Если структура хранит ресурсы требующие очистки или освобождения, то подумайте о том, чтобы заменить её на класс или включить в класс-обёртку в качестве поля.