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;
}
}
