اصلا چرا از Immutable استفاده می کنیم و چرا تیم توسعه دات نت نحوه تعریف آنها را این همه راحت کرده؟
شئ immutable : شیی هست که پس از نمونه سازی اولیه ، وضعیت آن غیر قابل تغییر باشد و کلاسی که شیی های آن چنین رفتاری داشته باشند را immutable می گویند.
این قابلیت را از نسخه اول دات نت داشتیم و نوع داده ای رشته (string) رفتاری این چنینی دارد و بعد از تعریف یک متغیر از نوع رشته ، با هر تغییر آن متغیر یک خانه جدید حافظه به آن اختصاص داده می شود و خانه قبلی توسط Garbag Collector از بین خواهد رفت.
مزایای استفاده از Immutable ها:
آنها اصطلاحا thread-safe هست و توسعه دهنده می تواند به صورت همزمان و موازی بر روی این نوع های داده ای کار کند.چرا که به صورت read-only تعریف شده اند.اشیا immutable غیر قابل تغییر هستند و با ارسال آنها به هر متدی می توان اطمینان داشت که بعد از اتمام کار آن متد تغییری در وضعیت و داده های آن شی ایجاد نشده است. و همین امر باعث شده است که بتوانیم از حافظه به صورت بهینه تر و مدیریت شده استفاده کنیم.
فرض کنید یک شی مقداری را در خود نگه داری می کند که قرار است در جاهای مختلفی استفاده شود . وقتی به صورت read-only تعریف بشه در یک مکان حافظه قرار می گیرد و این ادرس حافظه به جاهایی که نیاز به این شی دارند داده می شود و بارها و بارها از این شی استفاده می شود و مشکلی برای هدر رفات حافظه به وجود نمی آید و همین طور پروژه های ما دچار باگ کمتری می شوند.