C# String Interpolation: Performans ve Format Seçenekleri
String birleştirme C# uygulamalarında sık kullanılır ama yanlış yöntem seçersen performans düşer. String interpolation ($"..."), Concat, Format ve StringBuilder arasında ciddi fark var.
Temel olarak üç yöntemi karşılaştıralım. Interpolation C# 6.0+ ile geldi ve okunabilirlik açısından çok temiz. Ama büyük veri işleme veya döngü içinde çalıştığında StringBuilder'a kıyasla yavaş kalabilir.
1using System;2using System.Diagnostics;3using System.Text;45class Program6{7static void Main()8{9string name = "Ahmet";10int age = 28;11decimal salary = 5000.50m;12int iterations = 1000000;1314// 1. String Interpolation15var sw1 = Stopwatch.StartNew();16for (int i = 0; i < iterations; i++)17{18string result = $"Adı: {name}, Yaş: {age}, Maaş: {salary:C2}";19}20sw1.Stop();21Console.WriteLine($"Interpolation: {sw1.ElapsedMilliseconds}ms");2223// 2. String.Concat24var sw2 = Stopwatch.StartNew();25for (int i = 0; i < iterations; i++)26{27string result = string.Concat("Adı: ", name, ", Yaş: ", age, ", Maaş: ", salary.ToString("C2"));28}29sw2.Stop();30Console.WriteLine($"Concat: {sw2.ElapsedMilliseconds}ms");3132// 3. String.Format33var sw3 = Stopwatch.StartNew();34for (int i = 0; i < iterations; i++)35{36string result = string.Format("Adı: {0}, Yaş: {1}, Maaş: {2:C2}", name, age, salary);37}38sw3.Stop();39Console.WriteLine($"Format: {sw3.ElapsedMilliseconds}ms");4041// 4. StringBuilder42var sw4 = Stopwatch.StartNew();43for (int i = 0; i < iterations; i++)44{45var sb = new StringBuilder();46sb.Append("Adı: ").Append(name).Append(", Yaş: ").Append(age).Append(", Maaş: ").Append(salary.ToString("C2"));47string result = sb.ToString();48}49sw4.Stop();50Console.WriteLine($"StringBuilder: {sw4.ElapsedMilliseconds}ms");51}52}Beklenen çıktı (makine hızına göre değişir):
1Interpolation: 450ms2Concat: 380ms3Format: 520ms4StringBuilder: 280msFormat seçeneklerine gelince, interpolation içinde direkt biçim belirtebilirsin. Para formatı `:C2`, tarih `:yyyy-MM-dd`, sayı `:N2` gibi. var price = 1234.5678m;
var date = DateTime.Now;
var count = 42;
Console.WriteLine($"Fiyat: {price:C2}"); // Fiyat: 1.234,57 ₺
Console.WriteLine($"Tarih: {date:yyyy-MM-dd}"); // Tarih: 2025-01-15
Console.WriteLine($"Sayı: {count:D4}"); // Sayı: 0042
Console.WriteLine($"Yüzde: {0.856:P1}"); // Yüzde: %85,6
Praktik kural: API yanıtları veya günlük kayıtları biçimlendirirken interpolation kullan, okunabilir ve yeterli. Ama döngü içinde binlerce string oluşturursan StringBuilder tercih et. Concat, ikisinin ortasında kalır ama format seçenekleri desteklemez, o yüzden nadir kullanılır. String.Format ise eski kodlarda görülür; interpolation aynı işi daha temiz yapar.
0 yorum