Por que retornar uma interface de coleção em vez de um tipo concreto? [duplicado]

Esta pergunta já tem uma resposta aqui:

Lista <T> ou IList <T> 18 respostas

Percebi no código de outras pessoas que os métodos que retornam coleções genéricas quase sempre retornam uma interface (por exemplo,IEnumerable<T> ouIList<T>) em vez de uma implementação concreta.

Eu tenho duas perguntas relacionadas. Em primeiro lugar, por que (se é que existe) é considerado melhor retornar uma interface? Em segundo lugar, existe uma interface de coleção que inclui o método Sort (comoList<T> faz)?

questionAnswers(4)

yourAnswerToTheQuestion