1
resposta

IDictionary e Dictionary

Boa noite,

Qual o motivo/utilidade de utilizar um dicionario deste modo:

private IDictionary<int, Aluno> dicionarioAlunos = new Dictionary<int, Aluno>();

Se utilizar assim: private Dictionary<int, Aluno> dicionarioAlunos = new Dictionary<int, Aluno>();

Qual a diferença?

Grato,

Peres

1 resposta

Olá, Ronaldo

Pode não fazer muita diferença para variáveis locais, mas a vantagem de se declarar propriedades e campos de nível de classe ou parâmetros como interface é a versatilidade. Você pode atribuir depois à mesma variável instâncias de classes diferentes, que implementam a mesma interface.

Com isso, seu código não está exigindo uma determinada classe, isto é, não está "engessado" e dependente de uma classe concreta, pois você estará definindo a interface como um contrato que tem que ser cumprido, não importa qual classe implemente esse contrato.

Outro bom motivo para interfaces é quando usamos injeção de dependência. Em ASP.NET Core, por exemplo, é fundamental declarar variáveis e parâmetros como interfaces, para que o "conteiner de injeção de dependência" possa injetar instâncias das classe concretas que foram previamente configuradas.