Método Dispose e Propriedades – Garbage Collector, Propriedades e Indexadores: Estrutura da Linguagem – Parte 2

Confira neste artigo o método Dispose e as Propriedades.

 Olá pessoal, neste artigo veremos os conceitos finais do Garbage Collector, como o método Dispose e a classe GC, e começaremos a ver as Propriedades. Acompanhem:

 Dispose – O método Dispose é uma convenção do .NET Framework para que as classes disponibilizem ao programador um meio de liberar a memória usada sem ter que esperar o Garbage Collector fazer isso.

 O Dispose pode ser colocado como uma alternativa ao Destructor, onde o programador pode chama-lo a qualquer hora, e tem permissão para acessar tipos gerenciados sem restrições.

 Podemos chamar o método Dispose para liberar um recurso expansível, como fechar um controle de arquivo imediatamente.

 Com relação à localização do método Dispose, ela se dá na interface IDisposable do namespace System. O método Dispose é o único membro desta interface, que deve ser herdado e implementado pelos objetos dispensáveis. Em seguida, chamamos o método Dispose do mesmo modo que um método comum para dar início ao Garbage Collector determinístico.

 Veja abaixo um exemplo com o uso do Dispose e seu respectivo resultado:

class Program : IDisposable

{

string valor = "Objeto Criado";

 

public void Dispose()

{

String valor = null;

 

Console.WriteLine("A memória ocupada foi liberada!");

}

 

static void Main(string[] args)

{

Program objProgram = new Program();

Console.WriteLine(objProgram.valor);

objProgram.Dispose();

Console.ReadKey();

}

}


 Observação importante: um recurso interessante do C# é o comando using. Este comando permite, de maneira fácil, que o método Dispose seja sempre chamado assim que uma variável seja usada. Veja um exemplo:

using (System.IO.StreamWriter objStreamWriter = new System.IO.StreamWriter("dados.txt"))

{

objStreamWriter.Write("Show!");

objStreamWriter.Close();

}

 No exemplo acima, o método Dispose do objeto objStreamWriter será chamado automaticamente, mesmo que o comando gere um erro em tempo de execução. Portanto, o comando using é uma maneira de o programa ter certeza que, se o objetivo tiver que liberar recursos, ele o fará, não importa o que aconteça.

 Classe GC – A classe GC encontra-se no namespace System e contém métodos estáticos que podem ser chamados. Por exemplo, para forçar a coleta de lixo do sistema, basta chamar o método:

GC.Collect();

 Embora não seja aconselhável o programador chamar diretamente o recurso de coleta de lixo no .NET Framework através do programa, isso pode ser útil em casos onde o sistema realmente ocupa uma grande quantidade de memória.

 Propriedades – Uma propriedade é um valor que a classe disponibiliza para gravação, leitura ou ambas as ações. Logicamente, uma propriedade é semelhante a um campo. No entanto, esta sintaxe semelhante a do campo é convertida automaticamente pelo compilador em chamadas para acessadores especiais semelhantes aos dos métodos.

 Veja abaixo o formato de uma declaração da propriedade (presente no .NET Framework 2.0):

Modificador_De_Acesso Tipo Nome_Da_Propriedade

{

get

{

//Bloco de código de leitura

}

set

{

//Bloco de código de escrita

}

}

 Acima podemos constatar que uma propriedade pode conter dois blocos de código, que iniciam com as palavras-chave get e set. Veja a descrição deles:

·Bloco get – Este bloco contém expressões que são executadas assim que ocorre a leitura da propriedade.

·Bloco set – Este bloco contém expressões que rodam assim que a propriedade é escrita.

Observação: Lembrando que a partir do Visual Studio 2008 podemos declarar nossos “getters” e “setters” da seguinte forma (mais nada nos impede de usar a forma apresentada anteriormente!):

public string valor { get; set; }

 Assim poupamos código e melhoramos a performance de nossa aplicação.

 Fonte de Consulta: Apostila de C#, da Impacta Tecnologia.

 Assim finalizo o artigo. Na próxima e última parte veremos exemplos práticos com as Propriedades e veremos também os Indexadores, não percam!

 Um abraço, e até o próximo artigo.

 Wellington Balbo de Camargo

 wellingtonbalbo@gmail.com

Artigos relacionados