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;
4
5class Program
6{
7static void Main()
8{
9string name = "Ahmet";
10int age = 28;
11decimal salary = 5000.50m;
12int iterations = 1000000;
13
14// 1. String Interpolation
15var 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");
22
23// 2. String.Concat
24var 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");
31
32// 3. String.Format
33var 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");
40
41// 4. StringBuilder
42var 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):

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1Interpolation: 450ms
2Concat: 380ms
3Format: 520ms
4StringBuilder: 280ms

Format 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.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz