Paulo Sorrentino

campos “readonly” vs. “const”

Sabemos que podemos criar constantes utilizando a palavra chave “const” no C#.  

Uma constante deve ter seu valor atribuido na sua declaração. Seu valor nunca poderá ser alterado durante a execução do código.
Exemplo:  

public class Exemplo
{
          public const int minhaConstante = 10;
 

          public void teste()
          {
                     //ERRO: Não posso atribuir um valor a uma
                     //constante a não ser na sua declaração.
                     minhaConstante = 3;
          }
}

Então qual a diferença de usar uma constante ou um campo apenas leitura com a palavra chave “readonly”?

 Um campo declarado com a palavra chave “readonly” assim como a constante também só pode ter seu valor atribuido na sua declaração e não pode ser alterado durante a execução do código. No entanto, diferente da constante seu valor também poder ser atribuído no construtor da classe cujo campo pertence.
Exemplo: 

 public class Exemplo
{
          
public readonly int campoApenasLeitura = 10;  

           public Exemplo()
           {
                  campoApenasLeitura = 20;
           } 

           public void teste()
           {
                     //ERRO: Não posso atribuir um valor a um campo ‘readonly’,
                    
//a não ser na sua declaração ou no construtor da classe.
                     campoApenasLeitura = 3;
           }
}

Os atributos Obsolete, Deprecated e Discontinued

Certa vez ouvi alguém perguntar qual a diferença entre os atributos “Obsolete”, “Deprecated” e “Discontinued” no .NET

Resumindamente a diferença é a seguinte:

  • “Discontinued” - Não está mais presente nesta versão da aplicação.
  • “Deprecated” - Está presente neste release da aplicação, mas não está mais sendo desenvolvido ou suportado e será desconitnuado no próximo release ou no seguinte.
  • “Obsolete” – Há uma opção melhor disponível do recurso em questão. Provavelmente será removido no próximo release.