1. Sətr interpolasiyasını xatırlayırıq
Çox vaxt bizə sadəcə sətri çıxarmaq yox, ora dəyişənlərin dəyərlərini əlavə etmək lazımdır. Əvvəllər bunun üçün ya konkatenasiya (+), ya da string.Format metodundan istifadə olunurdu. Amma C#-da sətr interpolasiyası (string interpolation) adlı magiya gələndən sonra həyat lap rahat oldu.
Sətr interpolasiyası necə işləyir
Sətrin əvvəlində $ işarəsi əlavə et, sətrin içində isə dəyişənləri və ya hətta tam ifadələri əlavə etmək üçün qıvrım mötərizələrdən {} istifadə et.
Köhnə və yeni üslubda dəyişənlərlə çıxışın müqayisəsi
string name = "Anna";
int age = 24;
Console.WriteLine("Məni adlandırırlar " + name + ", mənim " + age + " yaşım var."); // Köhnə üslub
Console.WriteLine($"Məni adlandırırlar {name}, mənim {age} yaşım var."); // Yeni üslub!
Birbaşa hesablamalar və ifadələr əlavə etmək olar:
int a = 5, b = 10;
Console.WriteLine($"Cəmi {a} + {b} = {a + b}");
2. Sətr interpolasiyası necə işləyir
Sətrin əvvəlində $ qoyuruq, dəyişənləri və ya ifadələri isə qıvrım mötərizələrə {} salırıq:
string name = "Anna";
int age = 24;
Console.WriteLine($"Məni adlandırırlar {name}, mənim {age} yaşım var.");
- Mötərizədən kənarda olan hər şey — sadəcə mətn.
- Mötərizənin içində olan hər şey C# kodu kimi işlənir: dəyişən adı, arifmetika, metod çağırışı və s. ola bilər.
Birbaşa sətrin içində hesablamalar və ifadələr
Interpolasiya təkcə sadə dəyişənlərlə məhdudlaşmır! Bax, nələr edə bilərsən:
Arifmetik ifadələrint apples = 7;
int pears = 5;
Console.WriteLine($"Məndə cəmi {apples + pears} meyvə var."); // 12
Sətirlərlə əməliyyatlar və metodlar
string city = "Budapeşt";
Console.WriteLine($"Şəhər böyük hərflərlə: {city.ToUpper()}"); // BUDAPEŞT
Ternar operatorlar, şərtlər
int score = 90;
Console.WriteLine($"Qiymət: {(score >= 60 ? "keçdi" : "keçmədi")}");
Metod çağırışları
string FormatUser(string name, int age) => $"{name} ({age})";
Console.WriteLine($"İstifadəçi: {FormatUser("Eva", 19)}"); // İstifadəçi: Eva (19)
Massivlər və kolleksiyalarla iş
int[] numbers = { 3, 5, 7 };
Console.WriteLine($"Cəmi: {numbers.Sum()}");
Console.WriteLine($"Elementlər: {string.Join(", ", numbers)}");
Daxili ifadələr və mürəkkəb konstruksiyalar
var user = new { Name = "Oleg", Role = "Admin" };
Console.WriteLine($"Ad: {user.Name}, rol: {(user.Role == "Admin" ? "administrator" : "istifadəçi")}");
mötərizənin içindəki ifadələr qısa və oxunaqlı olmalıdır. Əgər məntiq mürəkkəbdirsə — onu əvvəlcədən hesabla və hazır dəyişəni əlavə et.
var student = new { Name = "Sasha", Info = new { Age = 21, Uni = "Harvard" } };
Console.WriteLine($"Ad: {student.Name}, universitet: {student.Info.Uni}");
Tip çevrilmələri birbaşa
double price = 19.99;
int count = 3;
Console.WriteLine($"Ümumi qiymət: {price * count} avro");
Tarix və vaxt — birbaşa lazım olan formada
DateTime now = DateTime.Now;
Console.WriteLine($"Bu gün: {now.Day}.{now.Month}.{now.Year}");
Dövr ilə nümunə
var days = new[] { "B.e.", "Ç.a.", "Ç." };
Console.WriteLine($"Həftənin günləri: {string.Join(", ", days)}");
3. Interpolasiyada formatlama
Çox vaxt ədədləri, tarixləri, valyutanı və ya faizləri gözəl göstərmək vacibdir.
Interpolasiya birbaşa mötərizənin içində format göstərməyə imkan verir — iki nöqtədən sonra.
Ümumi sintaksis: {ifadə:format}
Ədədlərin formatlanması
double num = 1234.5678;
Console.WriteLine($"Yumrulaşdırılmış: {num:F2}"); // 1234.57
Console.WriteLine($"Eksponential formada: {num:E1}"); // 1.2E+003
Console.WriteLine($"Rəqəmlərin ayrılması ilə: {num:N}"); // 1 234,57 (kulturanın ayarından asılıdır)
Format nümunələri:
- F2 — vergüldən sonra iki rəqəm
- N0 — minlik ayırıcı, vergüldən sonra 0 rəqəm
- E1 — eksponential görünüş, nöqtədən sonra 1 rəqəm
- P0 — faiz, nöqtədən sonra 0 rəqəm
double ratio = 0.1234;
Console.WriteLine($"Faiz: {ratio:P1}"); // 12,3 %
Tarixlərin formatlanması
DateTime d = new DateTime(2025, 6, 18, 15, 42, 0);
Console.WriteLine($"Tarix: {d:dd.MM.yyyy}"); // 18.06.2025
Console.WriteLine($"Vaxt: {d:HH:mm}"); // 15:42
Console.WriteLine($"ISO: {d:yyyy-MM-ddTHH:mm:ss}"); // 2025-06-18T15:42:00
Tarix formatları qısa:
- dd — gün (2 rəqəm)
- MM — ay
- yyyy — il
- HH:mm — saat:dəqiqə (24 saatlıq)
- d — qısa tarix (kulturanın ayarına görə)
- D — uzun tarix
Valyuta və pul formatlama
decimal cost = 2999.5m;
Console.WriteLine($"Qiymət: {cost:C}"); // 2,999.50 $ (kulturanın ayarından asılıdır)
Düzləndirmə və doldurma
Sahənin enini, sağa və ya sola düzləndirməni təyin etmək olar:
int val = 7;
Console.WriteLine($"[{val,5}]"); // [ 7] — sağda
Console.WriteLine($"[{val,-5}]"); // [7 ] — solda
Formatların birləşdirilməsi
DateTime dt = DateTime.Now;
Console.WriteLine($"Bu gün {dt:dddd, dd MMMM yyyy}, vaxt {dt:HH:mm}");
Müxtəlif tipli verilənlərlə interpolasiya
bool ok = true;
Console.WriteLine($"Əməliyyat {(ok ? "uğurlu" : "səhv")}");
Çoxsətrli interpolasiyalı sətirlər
Eləcə də, son zamanlar raw string literals və çoxsətrli interpolasiyalı sətirlər gəlib:
string user = "Timur";
int score = 100;
Console.WriteLine($"""
Təbriklər, {user}!
Sənin nəticən: {score}
""");
Daxili interpolasiya və hesablamalar
Metodları çağırmaq, nəticəni formatlamaq və sətrə əlavə etmək olar:
double[] temps = { 23.4, 25.1, 21.9 };
Console.WriteLine($"Orta temperatur: {temps.Average():F1}°C");
Cədvəl nümunəsi (düzləndirmə + format)
Cədvəldə interpolasiya ilə formatlama və düzləndirmə
double[] prices = { 123.4, 8.9, 5643.0 };
for (int i = 0; i < prices.Length; i++)
Console.WriteLine($"Məhsul {i + 1}: {prices[i,10:F2} avro");
Nəticə:
Məhsul 1: 123.40 avro
Məhsul 2: 8.90 avro
Məhsul 3: 5643.00 avro
4. Escape və interpolasiya birlikdə
Escape simvollarını və interpolasiyanı eyni anda istifadə etmək olar:
string user = "Maşa";
Console.WriteLine($"Salam, \"{user}\"!\nTanış olduğuma şadam.");
Çıxış:
Salam, "Maşa"!
Tanış olduğuma şadam.
Bunu verbatim sətirlərlə birləşdirsən, sadəcə əvvəl $, sonra @ qoyursan (əslində əksini də etmək olar — fərqi yoxdur):
string path = "C:\\Temp";
Console.WriteLine($@"Fayl tapıldı ünvan üzrə: ""{path}""");
GO TO FULL VERSION