Lidando com objetos .NET IDisposable
Eu trabalho em c # e tenho sido bastante relaxado ao usarusing
blocos para declarar objetos que implementamIDisposable
, o que aparentemente você sempre deve fazer. No entanto, não vejo uma maneira fácil de saber quando estou escorregando. O Visual Studio parece não indicar isso de maneira alguma (estou perdendo alguma coisa?). Devo verificar a ajuda toda vez que declaro algo e gradualmente criar uma memória enciclopédica para quais objetos são e quais não são descartáveis? Parece desnecessário, doloroso e propenso a erros.
Comovocê lidar com isso?
EDITAR:
Olhando para as perguntas relacionadas na barra lateral, descobrioutra pergunta o que deixou claro queDispose()
deve ser chamado pelo finalizador do objeto de qualquer maneira. Portanto, mesmo que você nunca chame a si mesmo, isso eventualmente acontecerá, o que significa que você não terá um vazamento de memória se não usarusing
(e é com isso que suponho estar realmente preocupado o tempo todo). A única ressalva é que o coletor de lixo não sabe quanta memória extra está sendo mantida pelo objeto como material não gerenciado, portanto, não terá uma idéia precisa da quantidade de memória liberada ao coletar o objeto. Isso resultará em um desempenho menos ideal do que o normal pelo coletor de lixo.
Em suma, não é o fim do mundo se eu perder umusing
. Eu só queria que algo gere pelo menos um aviso para isso.
(Fora do tópico: por que não existe uma remarcação especial para vincular a outra pergunta?)
EDITAR:
Ok, tudo bem, pare de clamar. É super duper demitidoesquilo-dramático-nívelimportante chamarDispose()
ou todos nósmorrer.
Agora. Dado isso, por que é tão fácil - inferno, por que é mesmopermitido - fazer errado? Você precisa se esforçar para fazer o que é certo. Fazer isso como todo o resto resulta em armageddon (aparentemente). Tanta coisa para encapsulamento, hein?
[Sai fora, enojado]