Например:
List <int> list = new List<int>();
((IEnumerable<int>)list).GetEnumerator();
В первой строчке у объекта list будут доступны все поля и методы класса List, в том числе у него будут доступен метод интерфейса IEnumerable Во второй строчке после приведения к типу IEnumerable у объекта полностью скрываются все поля и методы класса кроме метода , который реализуется от интерфейса IEnumerable. В чем тогда смысл приводить к этому типу, если метод интерфейса доступен в первом и втором случае? Скрывается только вся реализация класса, правда зачем ее скрывать мне тоже не очень понятно, подскажите кто-то, если поняли что я написал. Просто увидел в одном проекте такие строчки кода и интересно зачем это нужно.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей