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