Yükleniyor...

C# Metotlar ve Parametre Kullanımı

C#’ta metot tanımlama ve parametre kullanımını öğrenin. Değer ve referans parametreleri, varsayılan parametreler ve örneklerle.

C# dilinde metotlar, tekrar eden kodları düzenli ve tekrar kullanılabilir hale getirmek için kullanılır. Bir metot belirli bir işlevi yerine getirir ve program içinde birçok kez çağrılabilir. Böylece hem kod tekrarından kaçınılır hem de programın okunabilirliği artar.


Metot Tanımlama ve Çağırma

Bir metot dönüş tipi, adı ve isteğe bağlı parametreler ile tanımlanır. Örneğin aşağıdaki metot, ekrana basit bir mesaj yazdırır:


static void Selamla()
{
    Console.WriteLine("Merhaba!");
}

static void Main()
{
    Selamla(); // metot çağrısı
}
// Çıktı:
Merhaba!

Parametreli Metotlar

Metotlar dışarıdan değer alabilir. Bu değerlere parametre denir. Aşağıdaki örnekte bir isim parametresi alınıp selamlama mesajı kişiselleştirilir:


static void Selamla(string isim)
{
    Console.WriteLine("Merhaba " + isim + "!");
}

static void Main()
{
    Selamla("Ayşe");
    Selamla("Mehmet");
}
// Çıktı:
Merhaba Ayşe!
Merhaba Mehmet!

Değer Döndüren Metotlar

Metotlar işlem yapıp bir sonuç döndürebilir. Bunun için dönüş tipi tanımlanır (int, string vb.). Aşağıdaki örnekte iki sayıyı toplayan bir metot vardır:


static int Topla(int a, int b)
{
    return a + b;
}

static void Main()
{
    int sonuc = Topla(5, 7);
    Console.WriteLine("Toplam: " + sonuc);
}
// Çıktı:
Toplam: 12

Varsayılan Parametreler

Parametrelere varsayılan değer verilebilir. Eğer çağırırken parametre gönderilmezse bu değer kullanılır:


static void MesajYaz(string metin = "Varsayılan mesaj")
{
    Console.WriteLine(metin);
}

static void Main()
{
    MesajYaz("Merhaba dünya!");
    MesajYaz();
}
// Çıktı:
Merhaba dünya!
Varsayılan mesaj

Parametre ile Argüman Farkı

Parametre metot tanımında kullanılan isimdir. Argüman ise metot çağrılırken gönderilen gerçek değerdir.


static void KareAl(int sayi) // parametre: sayi
{
    Console.WriteLine(sayi * sayi);
}

static void Main()
{
    KareAl(4); // argüman: 4
}
// Çıktı:
16

Overloading (Aşırı Yükleme)

Aynı isimde ama farklı parametre sayısı veya türleri olan metotlar yazılabilir. Buna method overloading denir:


static int Carp(int a, int b)
{
    return a * b;
}

static int Carp(int a, int b, int c)
{
    return a * b * c;
}

static void Main()
{
    Console.WriteLine(Carp(3, 4));
    Console.WriteLine(Carp(2, 3, 4));
}
// Çıktı:
12
24

Recursion (Özyineleme)

Bir metodun kendisini çağırmasına özyineleme denir. Her özyineleme için bir çıkış koşulu (base case) tanımlanmalıdır; aksi halde döngü sonsuza kadar devam eder.


static int Faktoriyel(int n)
{
    if (n <= 1)
        return 1; // çıkış koşulu
    return n * Faktoriyel(n - 1); // kendini çağırır
}

static void Main()
{
    Console.WriteLine(Faktoriyel(5)); // 120
}

ref ve out Parametreleri

C#’ta ref ve out anahtar kelimeleri, metotlara parametrelerin referansla gönderilmesini sağlar. Bu sayede metot içinde yapılan değişiklikler dışarıya yansır.


// ref örneği
static void Arttir(ref int sayi)
{
    sayi++;
}

// out örneği
static void Oku(out int sonuc)
{
    sonuc = 42;
}

static void Main()
{
    int x = 5;
    Arttir(ref x);
    Console.WriteLine(x); // 6

    int y;
    Oku(out y);
    Console.WriteLine(y); // 42
}

params ile Çoklu Parametre

params anahtar kelimesi, değişken sayıda parametre almayı sağlar. Metoda dizi veya tek tek değerler verilebilir.

Sayıları Toplama Örneği:


static int Topla(params int[] sayilar)
{
    int toplam = 0;
    foreach (int s in sayilar)
        toplam += s;
    return toplam;
}

static void Main()
{
    Console.WriteLine(Topla(1, 2, 3));       // 6
    Console.WriteLine(Topla(5, 10, 15, 20)); // 50
}

Metinleri Birleştirme Örneği:


static string Birlesir(params string[] kelimeler)
{
    return string.Join(" ", kelimeler);
}

static void Main()
{
    Console.WriteLine(Birlesir("C#", "çok", "güçlü", "bir", "dildir."));
    // Çıktı: C# çok güçlü bir dildir.
}

Yerel Fonksiyonlar (Local Functions)

C# 7.0 ile birlikte bir metodun içinde başka bir metot tanımlanabilir. Bunlara yerel fonksiyon denir. Daha okunaklı ve düzenli kod yazmayı sağlar.


static void Main()
{
    int Carp(int a, int b) // yerel fonksiyon
    {
        return a * b;
    }

    Console.WriteLine(Carp(3, 4)); // 12
}

TL;DR

  • Metotlar, tekrar kullanılabilir kod bloklarıdır.
  • Parametreler, metotlara dışarıdan veri geçmek için kullanılır.
  • return ile değer döndürülür.
  • Varsayılan parametreler kodu esnek hale getirir.
  • Overloading ile aynı isimli farklı metotlar tanımlanabilir.
  • ref ve out parametreleri, değerleri referansla değiştirmeye yarar.
  • params ile değişken sayıda parametre alınabilir.
  • Yerel fonksiyonlar, metot içinde tanımlanan yardımcı metotlardır.
  • Özyineleme (recursion), metodun kendisini çağırarak çözüm üretmesidir.