Дескриптори, що відслідковують

Дескриптори, що відслідковують, (tracking handle) мають подібність із рідними покажчиками C++, однак є й істотні відмінності. Дескриптор зберігає адреса, і адреса, що у ньому втримується, автоматично обновляється збирачем сміття, якщо об'єкт, на який він посилається, переміщається під час стиску купи. Однак не можна застосовувати арифметику адрес до таких покажчиків, як це робиться з "рідними" покажчиками, крім того, не дозволяється приведення дескрипторів.

Всі об'єкти, створені в купі CLR, повинні забезпечуватися дескрипторами. Всі об'єкти посилальних типів класів зберігаються в купі й тому створені вами змінні, які посилаються на такі об'єкти, повинні бути дескрипторами. Наприклад, тип класу String - це посилальний тип класу, тому змінні, які посилаються на об'єкти String, повинні бути відслідковують дескрипторами, що. Пам'ять для типів класів значень за замовчуванням виділяється в стеці, але ви можете також розмістити їх у купі, використовуючи для цього операцію gcnew.