У меня есть друг, который просто вступает в .NET-разработку после разработки в Java целую вечность, и, посмотрев на некоторые из его кода, я заметил, что он довольно часто делает следующее:
IDictionary<string, MyClass> dictionary = new Dictionary<string, MyClass>();
Он объявляет словарь как интерфейс, а не класс. Обычно я бы сделал следующее:
Dictionary<string, MyClass> dictionary = new Dictionary<string, MyClass>();
Я использовал интерфейс IDictionary только тогда, когда это необходимо (скажем, например, чтобы передать словарь методу, который принимает интерфейс IDictionary).
Мой вопрос: есть ли какие-либо достоинства в его способе делать что-то? Является ли это обычной практикой в Java?