Como a coleta de lixo e o escopo funcionam em C #? [duplicado

Esta pergunta já tem uma resposta aqui:

ntendendo a coleta de lixo no .NET 3 respostas

Estou aprendendo C # vindo de python e gostaria de saber como funciona o coletor de lixo C # - descobri que entendi muito mais sobre python depois que descobri o que estava fazendo nos bastidores e gostaria de evitar os erros de noob que cometi ao aprender python.

Não consegui encontrar boas explicações claras sobre quando um item é coletado de lixo e fico com perguntas como

"O que acontece com um objeto quando sua última referência sai do escopo?" Esse objeto é coletado como lixo ou ainda está lá quando você retorna ao escopo em que foi definido? "Em que momento o número de referências é diminuído?" Levando-me a pensar se ele usa contagem de referência ou alguma outra técnica ...

Responda a essas perguntas, ou melhor, uma visão clara e clara do que realmente está acontecendo ganhará cookies (ou upvotes), e ainda melhor se sua resposta o comparar à maneira python de fazer as coisas. Não estou interessado no que é melhor, apenas nos detalhes. Também responde no meu post original em programmers.stackexchange seria muito apreciado ...

questionAnswers(5)

yourAnswerToTheQuestion