Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# programlama dilinin temel yapı taşlarından ve kod organizasyonunun bel kemiği olan metotları (methods) derinlemesine inceleyeceğiz. Metotlar, belirli bir görevi yerine getiren, tekrar tekrar çağrılabilen kod bloklarıdır. .NET Framework 4 ile C#'ta metotların nasıl tanımlandığını, kullanıldığını ve farklı parametre geçirme yöntemlerini gelin birlikte keşfedelim.
Metot Kavramına Giriş ve
Temel Terminoloji
Metotlar, programlarımızı daha modüler, okunabilir ve
yönetilebilir hale getirir. Belirli bir işlevi olan kod parçalarını metotlar
içinde toplayarak, aynı kodu tekrar tekrar yazmaktan kurtuluruz. Metotlarla
ilgili bazı temel terimleri hatırlayalım:
- Prosedür (Procedure): Geriye herhangi bir değer döndürmeyen metotlardır.
Genellikle belirli bir eylemi gerçekleştirmek için kullanılırlar. C#'ta
void anahtar kelimesi ile tanımlanırlar.
- Fonksiyon (Function): Geriye bir değer döndüren metotlardır. Belirli
bir hesaplama veya işlem sonucunu çağıran koda iletirler. Döndürecekleri
değerin veri tipi metot tanımında belirtilir.
- Parametre (Parameter): Bir metot tanımlanırken, dışarıdan veri
alabilmesi için belirtilen değişkenlerdir. Metot imzasında parantez içinde
türü ve adı belirtilir.
- Argüman (Argument): Bir metot çağrılırken, metot tanımındaki parametrelere karşılık gelen ve metoda gönderilen gerçek değerlerdir.
Metot Tanımlama Söz
Dizimi
Bir metotun temel yapısı şu şekildedir:
erişimBelirleyici döndürülecekDeğer MetotAdı(ParametreTipi ParametreDeğişkeni)
{
// Metotun gerçekleştireceği kodlar
return eğer döndürülecekDeğer void değilse;
}
- Erişim Belirleyici (Access Modifier): Metota nereden erişilebileceğini belirler
(örneğin public, private, static).
- Döndürülecek Değer (Return Type): Metotun geriye döndüreceği verinin türünü
belirtir. Eğer metot geriye değer döndürmüyorsa void olarak tanımlanır.
- Metot Adı (Method Name): Metotu çağırmak için kullanılan benzersiz bir
isimdir.
- Parametreler (Parameters): Metoda dışarıdan veri aktarmak için kullanılan, türü ve adı belirtilmiş değişkenlerdir (isteğe bağlıdır).
Örnek Metot Tanımları:
public void Metod1()
{
System.Console.WriteLine("Bu bir prosedürdür.");
}
string Metod2()
{
return "Bu bir fonksiyondur ve yazı döndürür.";
}
int Metod3(int sayi)
{
return sayi * 2;
}
public static void Metod4()
{
System.Console.WriteLine("Bu statik bir metottur.");
}
Önemli Not: Bir metotta bir parametreye varsayılan bir değer
atanmışsa, diğer parametrelere de varsayılan değer atanmalıdır. Aksi takdirde
derleme hatası oluşur.
// Hatalı tanımlama:
// int Topla(int a = 2, int b) { ... }
// Doğru tanımlama:
int Topla(int a = 2, int b = 4) { return a + b; }
Parametre Geçirme
Yöntemleri
C#'ta metotlara parametreler farklı şekillerde
geçirilebilir:
- Değer ile Geçirme (Value Passing): Metoda gönderilen argümanın bir kopyası
oluşturulur ve metot içinde bu kopya üzerinde işlem yapılır. Orijinal
argümanın değeri değişmez. Değer tipleri (int, double, bool vb.)
varsayılan olarak değer ile geçirilir.
- Referans ile Geçirme (Reference Passing - ref): Metoda gönderilen argümanın bellekteki adresinin
bir referansı geçirilir. Bu sayede metot içinde yapılan değişiklikler
doğrudan orijinal argümanı etkiler. ref anahtar kelimesi hem metot
tanımında hem de metot çağrısında kullanılır. ref ile geçirilen değişkene
metot çağrılmadan önce bir değer atanmış olmalıdır.
void Metod6(ref int sayi) { sayi = 100; } int numara = 5; Metod6(ref numara); // numara değişkeninin değeri şimdi 100 oldu
- Çıktı Parametreleri (out): ref'e benzer şekilde referans ile değer geçirmeye
yarar. Ancak out ile geçirilen değişkene metot çağrılmadan önce bir değer
atanması zorunlu değildir. Metot içinde out parametresine mutlaka bir
değer atanmalıdır. Bir metot birden fazla out parametresi alabilir.
void Metod7(out int sonuc) { sonuc = 5 * 5; // out parametresine değer atamak zorunlu } int kare; Metod7(out kare); // kare değişkeninin değeri şimdi 25 oldu
- Değişken Sayıda Parametre (params): Bir metoda belirsiz sayıda aynı türden argüman
geçirmek için kullanılır. Metot tanımında params anahtar kelimesi ile bir
dizi parametre tanımlanır. Metot çağrılırken virgülle ayrılmış birden
fazla argüman geçirilebilir.
void Metod5(params int[] sayilar) { int toplam = 0; foreach (int sayi in sayilar) { toplam += sayi; } System.Console.WriteLine($"Toplam: {toplam}"); } Metod5(1, 2, 3); // Çıktı: Toplam: 6 Metod5(10, 20, 30, 40); // Çıktı: Toplam: 100
- İsteğe Bağlı Parametreler (Optional Parameters): Metot tanımlanırken parametrelere varsayılan
değerler atanarak, bu parametrelerin metot çağrılırken isteğe bağlı hale
getirilmesi sağlanır. Eğer argüman geçirilmezse, varsayılan değer
kullanılır.
int Topla(int a, int b = 1) { return a + b; } int sonuc1 = Topla(5); // b için varsayılan değer (1) kullanılır, sonuç 6 int sonuc2 = Topla(5, 3); // b için belirtilen değer (3) kullanılır, sonuç 8
- Adlandırılmış Argümanlar (Named Arguments): Metot çağrılırken argümanları parametre
adlarıyla birlikte belirtme imkanı sunar. Bu, özellikle çok sayıda
parametresi olan metotları çağırırken kodun okunabilirliğini artırır ve
argümanların sırasını karıştırma riskini azaltır.
int Carp(int sayi1, int sayi2) { return sayi1 * sayi2; } int sonuc3 = Carp(sayi2: 5, sayi1: 10); // Parametre sırası önemli değil
Extension Metotlar
(Genişletme Metotları)
Extension metotlar, mevcut tiplere (sınıflara,
yapılara, arayüzlere) yeni metotlar eklememizi sağlayan özel bir özelliktir.
Extension metotlar statik bir sınıfta statik olarak tanımlanır ve ilk parametre
olarak genişletilecek tipin önüne this anahtar kelimesi eklenir.
public static class IntegerExtensions
{
public static int Artir(this int sayi)
{
return sayi + 1;
}
}
int num = 5;
int yeniNum = num.Artir(); // sanki int tipinin bir metoduymuş gibi çağrılır
System.Console.WriteLine(yeniNum); // Çıktı: 6
Metot Bilgisi ve Çağırma
Metotların ne iş yaptığını ve nasıl kullanıldığını
anlamak için metot imzalarına (erişim belirleyici, döndürülecek değer, metot
adı ve parametreler) bakmak önemlidir. Visual Studio gibi IDE'ler, metot
imzaları hakkında hızlı bilgi (IntelliSense) sunarak geliştirme sürecini
kolaylaştırır. Metot imzası üzerine üç adet eğik çizgi (///) ekleyerek otomatik
olarak açılan summary etiketi aracılığıyla metot hakkında açıklayıcı bilgiler
yazabiliriz. Bu, kodun dokümantasyonunu kolaylaştırır.
Metotlar, bulundukları sınıfın veya yapının bir örneği
(instance) üzerinden ya da eğer statik bir metotsa doğrudan sınıf adı üzerinden
çağrılır.
Ogrenci ogrenci1 = new Ogrenci();
ogrenci1.BilgiYazdir(); // Instance üzerinden metot çağırma
SinifIslemleri.OrtalamaHesapla(notlar); // Statik metot doğrudan sınıf adı üzerinden çağırma
Metot Çağırma Mekanizması
ve Bellek Yönetimi
Metotlar çağrıldığında, argümanlar metot parametrelerine kopyalanır (değer tipleri için değer kopyalanır, referans tipleri için referans kopyalanır). Değer tipleri belleğin Stack bölgesinde tutulurken, referans tiplerinin asıl verisi Heap bölgesinde saklanır ve Stack'te sadece bu verilere ait adres bilgisi tutulur. Heap üzerindeki işlemler Stack üzerindeki işlemlere göre genellikle daha yavaştır.
Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 ile metotların temel kavramlarını, tanımlama ve kullanma yöntemlerini, farklı parametre geçirme tekniklerini ve extension metotları detaylı bir şekilde inceledik. Metotlar, kodunuzu düzenlemenin, tekrar eden işlemleri önlemenin ve daha modüler uygulamalar geliştirmenin anahtarıdır. Umarım bu rehber, metotların gücünü anlamanıza ve kodlarınızda etkili bir şekilde kullanmanıza yardımcı olur. Bir sonraki yazımızda, sınıflar ve nesne yönelimli programlamanın temellerine giriş yapacağız.
Webkolog'u takipte kalın!
Hepinize metotlarla dolu ve başarılı kodlama
deneyimleri dilerim!
0 yorum:
Yorum Gönder