C#

String vs StringBuilder

String ve StringBuilder, programlama dillerinde kullanılan veri türleridir. Bu veri türlerinin arasındaki temel farklar şunlardır:

  1. Depolama yeri: String verileri, önceden tanımlanmış bir bellek alanında depolanır. Öte yandan, StringBuilder verileri, kullanıcı tarafından belirtilen bir bellek alanında depolanır.

  2. Performans: String verileri, değiştirilemez olduğundan, her değişiklik işlemi için yeni bir bellek alanı oluşturulur. Bu nedenle, String verileri daha yavaş çalışır. Öte yandan, StringBuilder verileri, değiştirilebilir olduğundan, mevcut bellek alanı üzerinde değişiklik yapılabilir. Bu nedenle, StringBuilder verileri daha hızlı çalışır.

  3. Özel durumlar: String verileri, null değerine atanabilir. Öte yandan, StringBuilder verileri, null değerine atanamaz.

String verileri, genellikle küçük ve değişmeyen veri kümelerinde kullanılır. Öte yandan, StringBuilder verileri, büyük ve sık değişen veri kümelerinde kullanılır.

StringStringBuilder
  • Değiştirilemez
  • Bir kere oluşunca RAM’deki değeri asla değiştirilemez
  • Yapılan herhangi bir değişiklik, eski değerinin iptal edilmesine ve yeni değeriyle tekrardan oluşturulmasına sebep olur

  • Multi-Thread uygulamalarda sorun çıkarmaz
  • Özelliği çoktur
  • Kullanımı klaydır
  • Değiştirilebilir
  • Oluşturduktan sonra yapılan değişiklikler nesnenin tekrardan oluşturulmasına sebep olmaz
  • Döngü içerisinde performansı çok iyidir

  • Oluşturma performansı kötüdür
  • Metod ve özellikleri daha azdır

Örnek:

StringStringBuilder
string colors;
colors += "red";
colors += "blue";
colors += "green";
StringBuilder sb = new StringBuilder("");
sb.Append("red");
sb.Append("blue");
sb.Append("green ");
string colors = sb.ToString();

  Her defasında RAM’de yeni string oluşturuldu

  Var olan StrinBuilder nesnesinin değeri değişti