Metotlara (Prosedür ve Fonksiyon) Giriş
Bir yazılım geliştiricisi, birbiri ardına yazdığı kod satırlarında birçok işlem yapmaktadır. Projenin boyutu büyüdükçe yazılan kod satırlarının sayısı da doğal olarak artmaktadır. Kod miktarı artmaya başladıkça işler karmaşıklaşmaktadır. Bazı kod gruplarının tekrarlandığı görülecek, kod satırlarını kontrol etmek güçleşecek ve aynı görevi yerine getiren kod bloklarından hata alındığında tamamını tek tek düzeltmek zorunda kalınacaktır. Dahası kodların okunabilirliği oldukça zorlaşacak ve bu sonuçlar doğrultusunda programın geliştirilebilirliği bir noktadan sonra duracaktır.
Tüm bu sorunları çözmek için kullanılan yapı fonksiyonel programlama dillerinde fonksiyon, nesne tabanlı programlama dillerinde ise metot olarak adlandırılır. Metotlar bazı işlemleri yapmak için oluşturulurlar ve kod akışında işlem sırası geldiğinde kullanılırlar. Kullanımları ile yazılım geliştiricileri aynı işlem için tekrar tekrar aynı kod yazma yükünden kurtarır. Daha az kod satırı yazıldığından kod karmaşıklığını önler ve kodun daha iyi okunmasını ve anlaşılmasını sağlar. Öte yandan, aynı işlevi farklı yerde gerçekleştiren kodun yönetimi tek bir yerden yapıldığından, kodu yönetmek ve hataları yakalamak kolaylaşır. Tüm bu avantajlarının yanı sıra tek bir yerden yönetimi sayesinde kod kolayca geliştirilebilir.
Metot Oluşturma?
Metotlar tanımlanırken bir takım kurallar mevcuttur. Bunlar;
Metotların bir ismi vardır ve değişken tanımlarında olan kurallar geçerlidir.
Metotların bir erişim seviyesi vardır.
Metotların dönüş değeri olabilir. Dönüş değeri yoksa void anahtar kelimesi kullanılmalıdır.
Metotlar parametre alabilirler ve birden fazla parametre varsa parametreler virgül (,) ile ayrılır.
Main Metodu ve Özel İfadeler
Main() Metodu
Main( ) metodu ana programın başlamasını sağlayan noktadır. Bu sebeple Main( ) metodu diğer metotlara göre daha özeldir. Program içerisinde yalnızca bir tane Main() metodu vardır.
Return Anahtar Sözcüğü
Return anahtar sözcüğü, geriye değer döndüren metotlarda bulunur ve metottaki işlemlerin ardından belirlenen dönüş tipinde değer döndürülmesini sağlar.
This Anahtar Sözcüğü
This anahtar sözcüğü, global değişkenlerin referans ile metot içerisinde kullanılmasını sağlar. Böylece metot içerisinde bulunan benzer değişken adlarında sınıfın üyeleri ile metodun üyeleri arasında ayrım sağlanır.
Parametre ve Argüman
Parametre ve argüman kavramları birbirine sıklıkla karıştırılmaktadır. Parametre, metotların oluşturulma esnasında verilen değişkenler iken argümanlar metotlar çağrılırken verilen değerlerdir. Parametre ve argüman kavramları değer döndürmelerine bakılmaksızın parametre alan bütün metotları ilgilendirmektedir.
Metot Türleri
Metotlar, değer döndürme durumlara göre ikiye ayrılırlar. Daha sonra bunlar da kendi içlerinde parametre alıp alamamalarına göre tekrar ikiye ayrılırlar.
Geriye Değer Döndürmeyen Metotlar
Geriye değer döndürmeyen metotlar, herhangi bir sonuç vermeyen metotlardır. Yalnızca içerisindeki kod bloklarında belirtilen işlemleri yerine getirirler. Dolayısıyla bu metotlar herhangi bir değişkene atanamazlar. Örnekle açıklanacak olursa MessageBox.Show() metodu geriye değer döndürmeyen bir metottur
Geriye Değer Döndüren Metotlar
Geriye değer döndüren metotlar, yapılan işlemlerin ardından mutlaka geriye değer veren metotlardır. Metodun geri dönüş tipiyle aynı bir değişkene atanabilirler. Bu metotların mutlaka bir geri dönüş tipi vardır ve bu istenilen tipte olabilir (string, double, float vb.).
Metot Çağrıları
Metot çağırma kavramı daha önceki örneklerde de gösterildiği üzere metodun, işlevini yerine getirmesinin istendiği yerde yazılmasıdır. Metotlar sadece lokal (yerel) alanda çağrılabilirler. Global alanda çağrılamazlar. Metotlar çalışmaları için çağrılmaları gerekir ve dolayısıyla çağrılmadıkları sürece çalışmaya başlamazlar. Global alanda kod bloğu olarak dururlar.
Değer ve Referans Veri Tipleri
C# dilinde veri tipleri, değer tipi (value type) ve referans tipi (reference type) olmak üzere ikiye ayrılır. Bilindiği üzere değişkenler, bellekte tutulan verilerdir. Bir değişkeni kullanırken aslında o değişkenin, bellekte tutulduğu adresindeki veriye ulaşırız. Değer tipleri değişkenin değerini direkt olarak bellek bölgesinden alırken, referans tipleri ise başka bir nesneye referans olarak kullanılırlar.
Değer (Pass by Value) ve Referans (Pass By Reference) İle Çağırma
Değer türünde gönderilen parametreler için metoda parametrenin bir kopyası gönderilir. Bu yüzden metoda parametre olarak aktarılan değişkenin metot içinde değiştirilmesi, esas değişkeni etkilemez. Ancak referans türündeki bir değişken metoda gönderilirken değişkenin referansı gönderildiği için, metot içerisindeki parametre olarak geçilen değişken üzerindeki değişiklikler orijinal değişkende gerçekleşmektedir.
Ref - Out Anahtar Sözcükleri
Bu anahtar sözcükler metot oluşturulurken parametre ile kullanıldığında artık argüman olarak verilen değişkenin referans adresine gidecek ve orijinal değer değişecektir. Ayrıca bu sözcüklerin diğer önemli kullanım amacı ise metodun birden fazla değer döndürmesini sağlamaktır..
Params Anahtar Sözcüğü
Params anahtar sözcüğü, aynı tipte olmak şartıyla metot içerisinde kullanılacak parametre sayısının bilinmediği bu gibi durumlarda kullanılmaktadır. Ayrıca dizi ile kullanılmasına rağmen diziyi bilinen dizi yapısından farklı bir şekilde tutar.