1. Tip konvertasiyası niyə lazımdır?
C# — ciddi tipli dildir. Əgər kompüterdə rəqəm üçün “qutu” varsa, ora mətn soxmağa çalışmaq — təxminən çəngəli USB portuna taxmağa cəhd etmək kimidir. Kompilyator bunu heç vaxt bağışlamaz! 😡
Amma həyatda biz tez-tez müxtəlif data tipləri ilə eyni anda işləyirik. Məsələn, səndə rəqəm saxlayan bir string var. Bax, burada konvertasiya (yaxud çevirmə) lazımdır.
Bir nümunəyə baxaq. Tutaq ki, istifadəçi sayını saxlamaq istəyirsən:
int a = 1;
int b = "2";
int c = "üç";
Kompilyator dərhal deyəcək: “Məni nə hesab edirsən? Mən string-i avtomatik rəqəmə çevirə bilmirəm, bunu özün etməlisən. String-i rəqəmə açıq şəkildə çevirməlisən".
C#-da konvertasiya üçün bir neçə yol var və hər birinin öz üstünlükləri, çatışmazlıqları və tipik “tələ”ləri var.
2. int-i string-ə çevirmək
İşimizdə tez-tez rəqəmin string formasını almaq lazım olur: məsələn, onu ekrana çıxarmaq, fayla yazmaq, şəbəkə ilə ötürmək, mətnlə birləşdirmək və s. C#-da bunun üçün bir neçə üsul var, hər biri fərqli situasiyalarda rahatdır.
ToString() funksiyası
Bu əsas və ən yayılmış üsuldur:
int number = 42;
string str = number.ToString(); // str == "42"
ToString() rəqəmi string-ə çevirir və bu struktur üçün default görünüşü verir.
String interpolasiyası ($"...")
Müasir və dəyişənlərlə string düzəltmək üçün rahat üsuldur:
int number = 42;
string str = $"Rəqəm: {number}";
String interpolasiyası daxil edilən dəyər üçün avtomatik ToString() çağırır.
Bir neçə dəyişəni birləşdirmək və hətta format göstərmək də olar:
int number = 42;
string str = $"{number:D5}"; // "00042" — beş rəqəm, əvvəlində sıfırlar
Boş string ilə konkatenasiya
Köhnə, amma işlək üsuldur:
int number = 42;
string str = number + "";
Bu yanaşma sadə hallarda tez işləyir, amma kod oxuyan proqramçı üçün o qədər də aydın deyil.
3. String-ə qeyri-aşkar çevirmə
Yuxarıda dediyimiz kimi, C# developer-ləri elə ediblər ki, C#-da bütün dəyişənləri, obyektləri, ifadələri string-ə çevirmək olar.
Hətta bu avtomatik baş verir, əgər string tipini başqa bir tiplə toplasaq. Nümunələr:
int a = 5;
string name = "Anya" + a; // name dəyişəni "Anya5" string-i saxlayır
int a = 5;
string city = a + "New York" + a; // city dəyişəni "5New York5" string-i saxlayır
int number = 10;
string code = "Yo";
string message = "Salam! " + number + code; // message dəyişəni "Salam! 10Yo" string-i saxlayır
Hər üç nümunədə biz rahatlıqla int və string tiplərini topladıq və nəticədə həmişə string tipi alındı.
Nümunələr:
int a = 5;
string name = "1" + a; // name dəyişəni "15" string-i saxlayır
int a = 5;
string city = a + "9" + a; // city dəyişəni "595" string-i saxlayır
int number = 10;
string code = "10";
string message = "" + number + code; // message dəyişəni "1010" string-i saxlayır
Toplama əməliyyatı soldan sağa aparılır, ona görə nəticə bəzən gözlənilməz ola bilər. Nümunə:
int a = 5;
string name = a + a + "1" + a; // name dəyişəni "1015" string-i saxlayır
İcra ardıcıllığı: ((a + a) + "1") + a
4. String-i rəqəmə çevirmək
C#-da rəqəmi string-ə çevirmək üçün sadəcə onu boş string ilə toplamaq kifayətdir:
string str = "" + rəqəm;
Bəs əgər string-i rəqəmə çevirmək lazımdırsa? Hər string-i rəqəmə çevirmək olmur. Amma əgər string yalnız rəqəmlərdən ibarətdirsə, mümkündür. Bunun üçün int tipində xüsusi Parse() funksiyası var.
Bu komanda belə görünür:
int x = int.Parse("string")
Burada int x — x adlı tam tipli dəyişənin elanıdır, string isə rəqəmlərdən ibarət string-dir (rəqəm kimi yazılmış string).
Nümunələr:
string str = "123";
int number1 = int.Parse(str); // number1 dəyişəni 123 rəqəmini saxlayır;
int number2 = int.Parse("321"); // number2 dəyişəni 321 rəqəmini saxlayır
int number3 = int.Parse("321" + 0); // number3 dəyişəni 3210 rəqəmini saxlayır
int number4 = "321"; // Kompilyasiya olunmayacaq: dəyişən int tipindədir, amma dəyər string tipindədir
Mənfi dəyərlər üçün də bu işləyir: int.Parse() funksiyası çox ağıllıdır.
GO TO FULL VERSION