Сборка мусора
Как только определено множество недостижимых объектов, сборщик мусора может освободить память, занимаемую ими, и оставить остальное как есть. Также можно после освобождения памяти переместить все или часть оставшихся объектов в другие области памяти, обновив вместе с этим все ссылки на них. Эти два варианта реализации называются, соответственно, "неперемещающим" и "перемещающим".
Проблема ABA
ABA-проблема для данной реализации стека на .net становится не актуальной благодаря среде с использованием сборщика мусора: мы не потеряем и не используем повторно (в другом потоке) ссылку на node (при доступе к node.Next в CAS) если вдруг поток № 2 раньше, чем поток № 1 выполнит операцию Pop(). В средах без управления памятью эта проблема стоит остро, и данное решение не подходит.