Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Por que usar o Readonly na declaração?

Na declaração abaixo, porque usar o readonly?

private readonly Stack<string> historicoAnterior = new Stack<string>();
3 respostas
solução!

Olá, Diego

Com o modificador readonly, o campo historicoAnterior fica imutável e assim os únicos lugares onde podemos defini-lo são na declaração do campo ou no construtor da classe. Se tentarmos chamar uma instrução como historicoAnterior = new Stack<string>(); em outro método (por exemplo em NavegarPara), tomaremos um erro.

Porém, se omitirmos o readonly isso não vai afetar o exemplo da aplicação da aula. É apenas uma técnica de programação defensiva.

Então com o Readonly eu garanto que o atributo pode ser manipulado apenas pelo construtor da classe ou pelos métodos da classe? Seria similar ao resultado obtido com a lista somente leitura que ensinou no curso?

Com o modificador readonly você não consegue modificar (atribuir um valor a) um campo em nenhum método ou propriedade, apenas na declaração do campo ou dentro do construtor.

A lista somente-leitura é duplamente protegida contra modificação: contra alterações externas aos elementos da coleção (com o ReadOnlyCollection) e contra alterações internas na instância da coleção em si (com o readonly).