одно использование неизменяемого шаблона - это конфигурация, которую вы не хотели неожиданно изменять.
другое использование - объект передачи данных (DTO), для которого вы хотите просто передать данные.
Из CodeProject:
Основные данные : Одним из самых масштабных применений неизменяемых объектов является загрузка основных данных.Основные данные, такие как страна, валюта, регион и т. Д., Редко изменяются.Поэтому мы хотели бы загрузить основные данные один раз в память, а затем мы не хотим, чтобы они были изменены.
Данные конфигурации : для всех приложений необходимы данные конфигурации.В мире Microsoft мы обычно храним эти данные конфигурации в файле Web.config или App.config.Данные такого типа представлены объектами, и эти данные, однажды загруженные в память приложения, не изменятся.Опять же, хорошая практика - делать объекты данных конфигурации такого рода неизменяемыми.
Объекты Singleton : В приложениях мы обычно создаем объекты-одиночки для общих статических данных.Поэтому, если общие данные не меняются, это отличный кандидат для неизменных объектов.Если вы новичок в шаблоне Singleton, обратитесь к этой статье Шаблон Singleton в C #.