Управляемый тип — тип данных,
инициализируемый (обычно с помощью
оператора new (создать)) в управляемой
динамически распределяемой области памяти,
но ни в коем случае не в неуправляемой
динамически распределяемой области памяти
или стеке Попросту говоря, управляемый тип
— тип, для которого сборка мусора
осуществляется автоматически, потому для
освобождения ресурсов, используемых
объектами этого типа, нет необходимости
использовать оператор delete (удалить). Вместо
того чтобы явно удалять объект, можно либо
сделать так, чтобы на него не указывал ни
один указатель, либо явно приравнять этот
указатель нулю. Неуправляемый тип — тип,
который игнорируется автоматическим
_gc class ManagedClass
// класс сборщика мусора ManagedClass
{
};
Ключевое слово _поде (без сборки мусора) просто означает, что класс, структура, массив или объект, на который указывает определенный с этим словом указатель, не управляется сборщиком мусора .NET. Данное ключевое слово используется для явного указания, что объект никогда не создается в управляемой динамически распределяемой области памяти. Недопустимо наследование типа, определенного с ключевым словом _дс (сборщик мусора) или _поде (без сборки мусора), от типа, определенного с другим из этих ключевых слов, равно, как не допускается использование _дс (сборщик мусора) в неуправляемом коде.
_nogc class UnmanagedClass
{
};
Заметим, что автоматическая сборка мусора управляемых объектов касается лишь освобождения неиспользуемой управляемой динамически распределяемой области памяти, но не других ресурсов, таких, как дескрипторы файлов или соединения с базами данных.