Mülakat #1 - Mutable ve Immutable

Mülakat #1 - Mutable ve Immutable

Image for post

Merhaba arkadaşlar,

Bu yazımda mülakatlarda sık sık duyduğumuz mutable ve immutable classlarından bahsedeceğim. Bahsederken de pekiştirmiş olacağım. 🙂

Mutable ingilizce kelime anlami olarak değişebilir, immutable ise değişmez anlamına gelmektedir. Aslında kelime anlamı ne olduğu konusunda gayet açık bir fikir veriyor. Biraz da bu terimleri programcı olarak inceleyelim.

Mutable types yeni bir instance yaratıldıktan sonra değişebilen tiplerdir. Immutable types ise instance yaratıldıktan sonra değişemeyen tiplerdir. İngilizce kelime anlamını verdiğim bölümü tekrarladım gibi oldu 😅. Biraz daha derinlemesine bakalım;

Mutable ve Immutabe typeları anlatırken genellikle kullanılan string ve StringBuilder classları üzerinden gideceğim.

string (System.String) : Immutabledır. Yaptığımız her işlem sonunda (concat, replace, substring, +) yeni bir memory üzerinden value okunur. Daha önce var olan memory boşa kalır ve garbage collector bu memory temizler🚿. Yani biz ne zaman elimizde olan string değişkenini güncellersek, yeni bir obje oluşur ve değişkenimiz bu objeyi referans edinir. eski obje referanssız kalarak yukarıda belirttiğim gibi çöpe atılmayı bekler.

neden string immutable sorusu aklınıza geliyorsa, click 🖱️

String.Builder : Mutabledır. Yani elimizdeki string’i StringBuilder classından oluşturup append etmek vs gibi operasyonları yaptığımızda, memory’de yeni bir object oluşmaz. StringBuilder’i initialize ettiğimizde elde ettiğimiz objenin üzerinde değişiklikler yapılır.

Image for post

Image for post