CodeGym /Kurslar /C# SELF /Qaytarılan dəyər və return operatoru

Qaytarılan dəyər və return operatoru

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

1. Giriş

Təsəvvür elə: telefonla (ya da app-lə, axı XXI əsrdir) pizza sifariş edirsən. Operatora sifarişin parametrlərini deyirsən və operator sənə nəticəni qaytarır: pizza! Operator susursa — acsan və xoşbəxtlik yoxdur.

Funksiyalar da belədir: bəzən onların işi sadəcə nəsə etməkdir, amma çox vaxt istəyirik ki, funksiya əlavə olaraq nəsə faydalı bir nəticə də qaytarsın, üstəlik bu nəticə hər dəfə fərqli giriş veriləndə fərqli ola bilər! Məsələn:

  • Funksiya iki ədədin cəmini hesablayır və nəticəni bildirir.
  • Funksiya insanın yaşını alır və kateqoriya qaytarır ("uşaq", "böyük", "pensioner").
  • Funksiya istifadəçini adla salamlayan gözəl bir sətir formalaşdırır.

Qaytarılan dəyər — funksiyanın öz işinin nəticəsini “çölə ötürmək” üsuludur.

2. Qaytarılan dəyəri olan metodun siqnatrası

Keçən mühazirədə belə bir şablon görmüşdük:

void PrintHello()
{
    Console.WriteLine("Salam!");
}
Qaytarılan dəyəri olmayan metod ( void)

void tipi o deməkdir ki, funksiya heç nə qaytarmır (void "boş", yəni dəyər yoxdur deməkdir).

İndi isə baxaq, nəsə qaytaran funksiya necə görünür:

int Add(int a, int b)
{
    // funksiyanın gövdəsi
}
Qaytarılan dəyəri olan metod ( int)

Burada int funksiyanın adından əvvəl yazılıb — bu, qaytarılan dəyərin tipidir. Yəni, əgər funksiya sətir qaytarırsa — string yazırıq, əgər ondalıqdırsa — double və s.

Funksiyanın elan sintaksisi belədir:

<qaytarılan dəyərin tipi> MetodAdi(<parametrlər>)
{
    // funksiyanın gövdəsi
}
Qaytarılan dəyəri olan metodun ümumi şablonu

Fərqli siqnatraların nümunələri:

Siqnatrası Nə qaytarır
int Sum(int a, int b)
Tam ədəd
string GetGreeting(string name)
Sətir
double Multiply(double x, double y)
Ondalık ədəd
bool IsAdult(int age)
Boolean dəyər

3. return operatoru: funksiyadan nəticəni necə qaytarmaq olar

Hər şeyin işləməsi üçün təkcə tipi göstərmək kifayət deyil — funksiyanı nəticəni “yuxarıya” göndərməyi də öyrətmək lazımdır. Bunun üçün return operatoru var. Onun köməyi ilə deyirik: bax, bu dəyəri qaytarıram və bu anda funksiya icranı dayandırır (sanki "çölə çıxır").

tip MetodAdi(...)
{
    // hansısa hesablamalar
    return dəyər;
}
return istifadəsinin sxemi

Nümunə:

int Add(int a, int b)
{
    int sum = a + b;
    return sum; // cəmi funksiyanın nəticəsi kimi göndəririk
}

Vacib qayda: return ilə qaytarılan dəyərin tipi tam olaraq (və ya uyğun) metodun siqnatrasında göstərilən tipə uyğun olmalıdır.

4. Nümunələr: nəsə qaytaran metodlar yazırıq

Gəlin dərhal nümunələrdə baxaq! Bir neçə məşhur halı nəzərdən keçirək.

Nümunə 1: iki ədədin cəmi

int Add(int a, int b)
{
    return a + b;
}

// İstifadə:
int result = Add(10, 20);
Console.WriteLine("Cəm: " + result); // Çıxış: Cəm: 30

Nümunə 2: fərdi salamlaşma

string CreateGreeting(string name)
{
    return "Salam, " + name + "!";
}

// İstifadə:
string greeting = CreateGreeting("Anna");
Console.WriteLine(greeting); // Çıxış: Salam, Anna!

Nümunə 3: yetkinlik yoxlanışı

bool IsAdult(int age)
{
    return age >= 18;
}

if (IsAdult(21))
{
    Console.WriteLine("Giriş icazəlidir.");
}
else
{
    Console.WriteLine("Bağışlayın, yalnız böyüklər üçün.");
}
// Çıxış: Giriş icazəlidir.

Nümunə 4: qaytarılan dəyər və ifadələrdə istifadə

Console.WriteLine("İki dəfə çox: " + MultiplyByTwo(7));

int MultiplyByTwo(int n)
{
    return n * 2;
}

5. Qaytarılan dəyərin tipi: müxtəliflik və özəlliklər

C#-da funksiya istənilən "tip" qaytara bilər (təkcə ədəd, sətir və s. deyil). Bir neçə hal:

  • Tam ədədlər: int, long, short — hər şey sadədir.
  • Ondalık: double, float, decimal.
  • Sətirlər: string.
  • Boolean: bool.
  • Massivlər: int[], string[] və s.
  • Referans tiplər: özün yaratdığın class obyektləri.
  • void: xüsusi hal, heç nə qaytarılmır.

Niyə qaytarılan dəyərin tipi bu qədər vacibdir?

Kompilyator ciddi şəkildə nə qaytardığınıza baxır. Əgər int qaytaracağına söz vermisinizsə, amma sətir və ya heç nə qaytarırsınızsa — səhv alacaqsınız. Elə bil sərt bir rəisdir.

Səhv nümunəsi:

int GetNumber()
{
    return "42"; // Səhv! int gözlənilirdi, amma string qaytarıldı.
}

6. return operatoru dəyərsiz: void-metodlar üçün

Ədalət naminə, qaytarılan tipi olan metodlarda (məsələn, int, string) return operatoru həmişə qaytarmaq istədiyimiz dəyərlə birlikdə olmalıdır.

Amma! Əgər funksiya void tipi ilə elan olunubsa, istəsən return operatorunu dəyərsiz də istifadə edə bilərsən — funksiyanın icrasını dərhal dayandırmaq üçün.

void PrintNumbers(int n)
{
    if (n <= 0)
    {
        Console.WriteLine("Ədəd mənfi olmamalıdır!");
        return; // Sadəcə funksiyadan çıxırıq, heç nə qaytarmırıq
    }
    for (int i = 1; i <= n; i++)
    {
        Console.WriteLine(i);
    }
}
return dəyərsiz void-metodda

Bu, hansısa şərtə görə funksiyanın icrasını dayandırmaq istəyəndə, amma heç nə qaytarmaq lazım olmayanda rahatdır.

7. return istifadə edərkən tipik səhvlər

Ay, nə qədər tez-tez yeni başlayan proqramçılar return ilə bağlı səhvlərdən baş sındırır!

Problem №1: nəsə qaytarmalı olan funksiyada return yoxdur

int GetValue(bool flag)
{
    if (flag)
        return 1;
    // Ayda! Bəs flag == false olsa?
}
// Səhv: kodun bütün yollarında return yoxdur!

Həll: funksiyanın bütün icra ssenarilərində return nəzərdə tut!

int GetValue(bool flag)
{
    if (flag)
        return 1;
    else
        return 0;
}

Problem №2: qaytarılan dəyərin tipi uyğun deyil

double GetMagicNumber()
{
    return 42; // Əslində, düzgündür (int avtomatik double-a çevrilir)
    // Amma funksiya int qaytarsaydı və biz string qaytarsaydıq — səhv olardı!
}

Qayda: tiplərin uyğunluğuna bax. Əmin deyilsənsə — açıq şəkildə tipə çevir:

return (double)42;

Problem №3: vaxtsız return

Bilin ki, return icra olunan kimi metod dərhal dayandırılır. Sonra yazılan heç nə işləməyəcək!

int GetNumber()
{
    return 5;
    Console.WriteLine("Bu sətir heç vaxt işləməyəcək"); // kompilyator da şikayət edəcək!
}

Problem №4: void-metodda dəyərlə return (qadağandır!)

void PrintSomething()
{
    return 1; // void-metoddan dəyər qaytarmaq olmaz!
}
2
Tapşırıq
C# SELF, səviyyə, dərs
Bağlanıb
Salamlaşma mətnini qaytaran metod
Salamlaşma mətnini qaytaran metod
2
Tapşırıq
C# SELF, səviyyə, dərs
Bağlanıb
Ədədin cüt olub-olmadığını yoxlayan metod
Ədədin cüt olub-olmadığını yoxlayan metod
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION