CodeGym /Kurslar /C# SELF /İnkişaf etmiş sətr interpolasiyası

İnkişaf etmiş sətr interpolasiyası

C# SELF
Səviyyə, Dərs
Mövcuddur

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ər
int 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")}");
Diqqət et:

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.

Çoxsəviyyəli ifadələr
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}""");
2
Tapşırıq
C# SELF, səviyyə, dərs
Bağlanıb
Rəqəmlərin və tarixlərin interpolasiyada formatlanması.
Rəqəmlərin və tarixlərin interpolasiyada formatlanması.
2
Tapşırıq
C# SELF, səviyyə, dərs
Bağlanıb
Məlumat cədvəli düzülüş və formatlaşdırma ilə.
Məlumat cədvəli düzülüş və formatlaşdırma ilə.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION