Давно не программировал, поэтому если встретятся фактические ошибки, делающие неверной цепь рассуждений, просьба просто указать на них. Если это трюизмы (== баян, если в словарь лазить лень), то причина в том же.
Насколько мне известно, память в языках типа Явы или Шарпа — не ресурс. Вернее, ресурс, но управляет им некая внешняя по отношению к программе штуковина — рантайм или виртуальная машина, или еще какой контейнер.
У программистов на плюсах был излюбленный прием — использовать пару конструктор-деструктор для контроля за выходом из блока кода. Например, CWaitCursor() делал запрос к API на отрисовку песочных часов, а ~CWaitCursor() вертал все в зад. Соответственно, можно было разместить на стеке анонимный объект в любом блоке, который управлял курсором автоматически и этот трюк был эксепшено-безопасным, что немаловажно. Конструкции finally не требовалось.
Теперь объекты размещаются в куче, но время их уничтожения недетерминировано.
Почему не ввести вместо using на такой случай специальный тип — стековый класс? Это ведь не потребует усложнения синтаксиса. Просто у структуры появится деструктор с детерминированным временем вызова.