Он возвращает экземпляр класса-оболочки , который не позволяет вызывающим абонентам напрямую изменять коллекцию, которую вы возвращаете.
Если бы вы просто возвращали базовый список, любой вызывающий абонент мог бы изменить его таким образом, чтобы это могло нарушить класс, которому на самом деле принадлежит список.
Даже если вы вернули свой список как интерфейс только для чтения (скажем, IEnumerable или ICollection), ничто не мешает вызывающей стороне выполнить приведение во время выполнения и попасть в список.
Возвращая объект-оболочку, вы можете запретить вызывающей стороне когда-либо изменять список. Оболочка не предоставляет никаких методов, позволяющих изменить базовый список, и попытка привести объект обертки не удастся. Оболочка не дублирует данные - она просто сохраняет ссылку на список и предотвращает операции записи.
В случае отображений ORM это позволяет объектной модели контролировать, в какой точке доступа вы можете изменять отношения между объектами.