crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
C# String İşlemleri: Neden StringBuilder Kullanmalıyız?
Metinlerle çalışmak her yazılımın temelidir. Ancak C#'ta string'ler hakkında bilmeniz gereken çok kritik bir teknik detay vardır: String'ler Immutable (Değiştirilemez) yapılardır. Bu basit bilgi, uygulamanızın hızı ve bellek kullanımı arasındaki farkı belirler.
1. String Neden "Değiştirilemez" (Immutable)?
C#'ta bir string değişkeni oluşturup üzerinde değişiklik yaptığınızda (örneğin iki metni topladığınızda), mevcut metin güncellenmez. Bunun yerine bellekte (Heap bölgesinde) yepyeni bir alan açılır ve yeni metin oraya yazılır. Eski metin ise Garbage Collector (Çöp Toplayıcı) tarafından temizlenene kadar bellekte yer kaplamaya devam eder.
C#:
string metin = "Merhaba";
metin += " Dünya"; // Bellekte "Merhaba" durur, yanına yeni bir "Merhaba Dünya" oluşturulur.
Eğer bu işlemi bir döngü içinde 10.000 kez yaparsanız, bellekte binlerce gereksiz metin kopyası oluşturmuş olursunuz. Bu da uygulamanın yavaşlamasına neden olur.
2. Kurtarıcı: StringBuilder Sınıfı
System.Text altında bulunan StringBuilder, Mutable yani değiştirilebilir bir yapı sunar. StringBuilder kullandığınızda bellekte tek bir alan ayrılır ve tüm ekleme/çıkarma işlemleri o alan üzerinde yapılır. Yeni bir nesne oluşturulmaz.
StringBuilder Kullanım Örneği
C#:
using System.Text;
StringBuilder sb = new StringBuilder("Başlangıç Metni");
for (int i = 0; i < 1000; i++)
{
sb.Append(" - Yeni Veri " + i); // Bellekte yeni nesne oluşturmadan ekleme yapar.
}
string sonuc = sb.ToString(); // En son tüm işlemi tek bir string'e çeviririz.
3. String vs. StringBuilder: Hangisini Seçmeli?
Her durumda StringBuilder kullanmak zorunda değilsiniz. Doğru aracı seçmek için şu tabloya göz atın:
| Durum | Tercih Edilmesi Gereken |
|---|---|
| Az sayıda (3-4 adet) metin birleştirme | String (String.Concat veya interpolation) |
| Döngü içerisinde metin ekleme işlemleri | StringBuilder |
| Sabit metinler üzerinde arama yapma | String |
| Büyük boyutlu rapor/log metni oluşturma | StringBuilder |
4. Sık Kullanılan String Metotları
Günlük hayatta en çok işinize yarayacak bazı string fonksiyonları:
[]Contains: Metin içerisinde arama yapar.
[]Replace: Belirli karakterleri başkalarıyla değiştirir.
[]Split: Metni belirli bir karaktere göre parçalara böler (Dizi döndürür).
[]Substring: Metnin belirli bir kısmını kesip alır.- ToLower / ToUpper: Küçük/Büyük harf dönüşümü yapar.
C#:
string email = " [email protected] ";
string temizEmail = email.Trim().ToLower(); // Boşlukları siler ve küçük harfe çevirir.
5. Modern C#: String Interpolation ($)
C# 6.0 ile gelen bu özellik, metinleri birleştirmek için en okunaklı ve performanslı yollardan biridir. + operatörü yerine $ işaretini kullanmak hem daha şık hem de hata payını azaltır.
C#:
string ad = "Ahmet";
int yas = 30;
// Eski usul:
string mesaj1 = "Hoşgeldin " + ad + ", Yaşın: " + yas;
// Modern ve Tavsiye Edilen:
string mesaj2 = $"Hoşgeldin {ad}, Yaşın: {yas}";
Sonuç
String yönetimi, küçük uygulamalarda fark edilmese de kurumsal projelerde belleği (RAM) en çok tüketen unsurlardan biridir. Eğer bir döngü içinde metinlerle uğraşıyorsanız mutlaka StringBuilder kullanın. Basit birleştirme ve formatlama işlemleri için ise String Interpolation ($) en büyük dostunuzdur.