احتمالا شما هم اصطلاح Immutable به گوشتون خورده و براتون سوال بوده که این به چه معنیه؟
معمولا همه تو توضیح این قضیه از کلاس string یاد میکنن و اون رو با StringBuilder مقایسه میکنن و در باب مزایا و معایب هر کدوم از اون ها صحبت میکنن
ایده من اینه که تو ساده ترین حالت این قضیه رو توضیح بدم
تغییر ناپذیری ، یعنی به محض این که کار وهله سازی (Constructor) یک شی (Object) به اتمام رسید ، نتوانیم آن را تغییر دهیم.
این مورد در جایی که آبجکت ها توسط ارجاع (by reference)پاس داده می شوند بسیار کاربردی است ، چرا که می توانیم اطمینان داشته باشیم شی مورد نظر در جای دیگری از کد تغییر نخواهد کرد.
یکی از اصلی ترین کاربرد های این مساله در مسائل همزمانی (Concurrency) است. چرا که نیاز به lock کردن نخواهیم داشت ، چون state شی تغییر نخواهد کرد.
استفاده از این مفهوم در کد میتواند به ذات جلوی مشکلات زیادی را بگیرد. این مفهوم یکی از مفاهیم اصلی در برنامه نویسی تابعی (Functional Programming) است. من در مورد کاربرد این مفهوم و مثال های عملی از Immutable Type ها در اینجا بیشتر نوشته ام
http://1saeedsalehi.ir/programming/2019/11/30/functional-programming-2-examples.html