C# fonksiyonları (metotlar), belirli bir işlemi gerçekleştirmek için kullanılan kod bloklarıdır. Kodun yeniden kullanılabilirliğini sağlar, okunabilirliği artırır ve karmaşıklığı azaltır. Bu yazıda C# fonksiyonlarının temelleri, nasıl tanımlandığı ve kullanıldığı detaylı bir şekilde anlatılacaktır.
1. C# Fonksiyonlarının Özellikleri
- Modüler Yapı: Kodunuzu farklı işlevlere bölebilirsiniz.
- Tekrarlanabilirlik: Aynı kodu tekrar yazmak yerine bir kez tanımlayıp birçok yerde kullanabilirsiniz.
- Parametreler: Fonksiyonlara dışarıdan veri gönderebilirsiniz.
- Geri Dönüş Değeri: Fonksiyonlar bir işlem sonucunu geri döndürebilir.
2. Fonksiyon Tanımı ve Kullanımı
C#’ta bir fonksiyon, returnType
(geri dönüş tipi), methodName
(metot adı), ve isteğe bağlı olarak parametrelerden oluşur.
Genel Söz Dizimi
geriDönüşTipi FonksiyonAdı(parametreler)
{
// İşlem bloğu
return değer; // Geri dönüş değeri
}
Temel Bir Örnek
int Topla(int a, int b)
{
return a + b;
}
Console.WriteLine(Topla(5, 10)); // Çıktı: 15
3. Fonksiyon Çeşitleri
a. Parametresiz ve Geri Dönüşsüz Fonksiyonlar
Bu tür fonksiyonlar ne parametre alır ne de bir değer döner.
void MesajYaz()
{
Console.WriteLine("Merhaba, C#!");
}
MesajYaz(); // Çıktı: Merhaba, C#!
b. Parametre Alan Fonksiyonlar
Parametre alarak gelen veriyi kullanır.
void Selamla(string isim)
{
Console.WriteLine($"Merhaba, {isim}!");
}
Selamla("Ali"); // Çıktı: Merhaba, Ali!
c. Geri Dönüş Değeri Olan Fonksiyonlar
İşlem sonucunu çağrıldığı yere döndürür.
double KareAl(double sayi)
{
return sayi * sayi;
}
Console.WriteLine(KareAl(4)); // Çıktı: 16
d. Parametreli ve Geri Dönüşlü Fonksiyonlar
Hem veri alır hem de bir sonuç döndürür.
int Faktoriyel(int n)
{
int sonuc = 1;
for (int i = 1; i <= n; i++)
{
sonuc *= i;
}
return sonuc;
}
Console.WriteLine(Faktoriyel(5)); // Çıktı: 120
4. Geri Dönüş Tipleri
C# fonksiyonlarında aşağıdaki gibi farklı geri dönüş tipleri kullanabilirsiniz:
- int: Tamsayı döndürür.
- double: Ondalıklı sayı döndürür.
- string: Metin döndürür.
- void: Geri dönüş değeri döndürmez.
- bool: Doğru (true) veya yanlış (false) döndürür.
bool CiftMi(int sayi)
{
return sayi % 2 == 0;
}
Console.WriteLine(CiftMi(10)); // Çıktı: True
5. Fonksiyon Aşırı Yükleme (Method Overloading)
C#’ta birden fazla fonksiyon aynı isme sahip olabilir, ancak farklı parametre türlerine veya sayısına sahip olmalıdır.
void Yazdir(string mesaj)
{
Console.WriteLine(mesaj);
}
void Yazdir(string mesaj, int tekrar)
{
for (int i = 0; i < tekrar; i++)
{
Console.WriteLine(mesaj);
}
}
Yazdir("Merhaba"); // Çıktı: Merhaba
Yazdir("Selam", 3); // Çıktı: Selam (3 kez)
6. Rekürsif Fonksiyonlar
Bir fonksiyonun kendisini çağırdığı durumlara rekürsiyon denir.
int Faktoriyel(int n)
{
if (n <= 1)
return 1;
return n * Faktoriyel(n - 1);
}
Console.WriteLine(Faktoriyel(5)); // Çıktı: 120
7. Değer ve Referans Tipinde Parametreler
a. Değer Tipinde Parametre
Fonksiyona gönderilen parametrenin bir kopyası üzerinde işlem yapılır.
void Degistir(int x)
{
x = 20;
}
int sayi = 10;
Degistir(sayi);
Console.WriteLine(sayi); // Çıktı: 10
b. Referans Tipinde Parametre
ref
veya out
anahtar sözcükleri ile gönderilen verinin kendisi üzerinde işlem yapılır.
void Degistir(ref int x)
{
x = 20;
}
int sayi = 10;
Degistir(ref sayi);
Console.WriteLine(sayi); // Çıktı: 20
8. Yerel ve Statik Fonksiyonlar
a. Yerel Fonksiyonlar
Bir metot içinde tanımlanan fonksiyonlardır.
void Islem()
{
int Topla(int a, int b)
{
return a + b;
}
Console.WriteLine(Topla(3, 4)); // Çıktı: 7
}
Islem();
b. Statik Fonksiyonlar
Statik sınıflar veya nesne oluşturmadan çağrılabilir fonksiyonlardır.
class Program
{
static void Selamla()
{
Console.WriteLine("Merhaba, Dünya!");
}
}
Program.Selamla(); // Çıktı: Merhaba, Dünya!