В этом случае, Булево преобразование isGreaterThanZero= Boolean(zero)
является лучшим с точки зрения скорости / производительности, потому что за этим нет логического условия (если ... еще).
А остальные методы условие и преобразование приведения немного медленны из-за своего логического условия (если ... еще).
isGreaterThanZero= zero > 0
isGreaterThanZero= zero ? true : false
Объект считают живым и не имеющим право на сборку "мусора", если живой поток содержит ссылку на него, или если на это ссылаются статически (прямо или косвенно в обоих случаях).
В обоих примерах асинхронный API сохраняет ссылку на Ваш запрос (в пуле потоков, где асинхронный, операции IO поселены), и таким образом, это не будет собрано "мусор", пока это не завершится.
Если объект не имеет никаких ссылок, что касается GC затем, что Вы больше не можете получать ссылку на него. Таким образом, у Вас не может быть объекта, который временно не имеет ссылки на него.
(Это не принимает ничего подлого как неуправляемый или небезопасный код, играющий в игры),
Нет, сборщик "мусора" не вызовет Вас проблемы.
Не предполагайте, что, потому что у Вас нет доступа к объекту, сборщик "мусора" собирается очистить его.
Сборщик "мусора" запускается со многих "корней" - объекты и ссылки, которые известны достижимые. Затем все объекты, достижимые от тех корней, найдены, и все остальное собрано.
Каждый рабочий поток - включая поток (потоки), которые обрабатывают Асинхронные вызовы, включен в список корней.
Объект остается ссылаемым очень хорошо реализацией асинхронных вызовов - который должен вести список всех открытых запросов, для сопоставления входящих данных к запросам. Скорее всего.NET использует глобальное (или класс) переменная для хранения запросов.
В первом примере кода, почему Вы создаете Запрос, если Вы не используете его?
Так или иначе, если никакая ссылка (прямой или косвенный) в настоящее время не существует к объекту ни от одного из объектов в объеме, GC может собрать его.
Таким образом в Вашем первом примере, когда программа выходит из Запроса Основного метода, находится все еще в объеме (в другом потоке), таким образом, это не будет собрано, пока асинхронный вызов не заканчивается. В Вашем втором примере оба, поток пула потоков и Ваш код сохраняют ссылку на Ваш объект, таким образом, это, очевидно, не будет собрано также.