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.
returnile değer döndürülür.- Varsayılan parametreler kodu esnek hale getirir.
- Overloading ile aynı isimli farklı metotlar tanımlanabilir.
refveoutparametreleri, değerleri referansla değiştirmeye yarar.paramsile 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.